Da geht es schon los ... für die Indexunterstützung (Primary Key) musst du Operatoren für deinen Datentyp haben. Schließlich muss die Datenbank zumindest herausfinden können, ob zwei Datensätze gleich sind. Also müssen Vergleiche möglich sein.
Dann kommen so Sonderfälle hinzu wie:
ist 0001.0001.0001 gleich 001.0001.0001?
Ect ect ect ...
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Gibt es da vielleicht ein Anfänger-Tutorial?
Nicht wirklich, sorry.
Eigene Datentypen schreiben ist nicht kompliziert, aber es ist Arbeit.
Nach einer Schablone kann man da nicht vorgehen, weil jeder Datentyp anders ist - andernfalls bräuchte man ja keine neuen Typen ;-)
Btw, würden dir nicht drei Spalten, jeweils mit einem Integer, genügen? Dann bildest du aus den drei Spalten den Primary Key.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
ja, so haben ich jetzt umgesetzt.
aus den 3 Spalten? also nicht jede einzeln ein primary key, sondern gemeinsam?
Wie weise ich darauf aber einen Fremdschlüssel zu? (Eine andere Spalte in einer anderen Tabelle soll hier auf alle Primary Keys den Fremdschlüssel haben)Code:CONSTRAINT "pk" PRIMARY KEY("material_kap", "material_hpos", "material_pos", "material_bereich_id"),
Ich habe noch nicht dazu gesagt, dass die Werte in den Einzelspalten durchaus mehrfach vorkommen können. (z.B. 344) Die Gesamtzahl ist aber einmalig. (344.333.444 und 344.333.445).
AndreasCode:test=*# create table t1 (a int, b int, c int, primary key(a,b,c)); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1" CREATE TABLE Zeit: 5,162 ms test=*# create table t2 (a int, b int, c int, foreign key(a,b,c) references t1); CREATE TABLE Zeit: 28,862 ms
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Sprich, die Anzahl der Schlüssel muss immer gleich sein. (hier 3: a,b,c)Code:CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1" CREATE TABLE t2 (a int, b int, c int, foreign key(a,b,c) references t1);
Macht es dann aber nicht mehr Sinn, einfach noch eine ID-Spalte (etwa Serial) hinzuzufügen und auf diese zu verweisen.?
Ich möchte ja, dass eine Spalte auf 3 Spalten den Fremdschlüssel hat. Und nicht, dass ein Schlüssel 3 Spalten mit 3 Spalten "verknüpft".
Depends. Wolltest Du einen Unique Constraint auf die 3 Spalten in T1 haben?
Hm. Am fehlenden Kaffee kann es einklich nicht liegen, daß ich diesen Satz jetzt nicht verstehe.Ich möchte ja, dass eine Spalte auf 3 Spalten den Fremdschlüssel hat. Und nicht, dass ein Schlüssel 3 Spalten mit 3 Spalten "verknüpft".
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Ich hatte wohl zu wenig Kaffee...nochmal:
In t1 habe ich einen zusammengesetzten Schlüssel: a, b, c.
t2 soll auf diese Schlüssel verweisen. Müssen deshalb Spalten a, b, c (aus t1) in t2 vorhanden sein? Oder kann man der Spalte x in t2 a, b, c zusammen zuweisen.
Karl
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen