Wie lautet die Syntax für die Angabe eines Primärschlüssels für mehr als 1 Spalte in SQLITE?
Antworten
Zu viele Anzeigen?Nach Angaben der Dokumentation ist es
CREATE TABLE something (
column1,
column2,
column3,
PRIMARY KEY (column1, column2)
);
Ja. Aber denken Sie daran, dass solche Primärschlüssel die NULL
Werte in beiden Spalten mehrfach.
Erstellen Sie eine Tabelle als solche:
sqlite> CREATE TABLE something (
column1, column2, value, PRIMARY KEY (column1, column2));
Jetzt funktioniert das ohne jede Vorwarnung:
sqlite> insert into something (value) VALUES ('bla-bla');
sqlite> insert into something (value) VALUES ('bla-bla');
sqlite> select * from something;
NULL|NULL|bla-bla
NULL|NULL|bla-bla
Basic :
CREATE TABLE table1 (
columnA INTEGER NOT NULL,
columnB INTEGER NOT NULL,
PRIMARY KEY (columnA, columnB)
);
Wenn Ihre Spalten Fremdschlüssel von anderen Tabellen sind (häufiger Fall):
CREATE TABLE table1 (
table2_id INTEGER NOT NULL,
table3_id INTEGER NOT NULL,
FOREIGN KEY (table2_id) REFERENCES table2(id),
FOREIGN KEY (table3_id) REFERENCES table3(id),
PRIMARY KEY (table2_id, table3_id)
);
CREATE TABLE table2 (
id INTEGER NOT NULL,
PRIMARY KEY id
);
CREATE TABLE table3 (
id INTEGER NOT NULL,
PRIMARY KEY id
);
Primärschlüsselfelder sollten als nicht null deklariert werden (dies ist kein Standard, da die Definition eines Primärschlüssels ist, dass er eindeutig und nicht null sein muss). Aber unten ist eine gute Praxis für alle mehrspaltigen Primärschlüssel in jedem DBMS.
create table foo
(
fooint integer not null
,foobar string not null
,fooval real
,primary key (fooint, foobar)
)
;
- See previous answers
- Weitere Antworten anzeigen
22 Stimmen
Dies wird auch als zusammengesetzter Schlüssel bezeichnet de.wikipedia.org/wiki/Verbindungsschlüssel
14 Stimmen
@OneWorld Oder zusammengesetzter Schlüssel, wenn eine der Spalten nicht selbst ein Schlüssel ist.