721 votes

Sqlite clé primaire sur plusieurs colonnes

Quelle est la syntaxe pour spécifier une clé primaire sur plus de 1 colonne dans SQLITE ?

940voto

Brian Campbell Points 101107

Selon la documentation, il est

CREATE TABLE something (column1, column2, column3, PRIMARY KEY (column1, column2));

181voto

xiwok Points 721
CREATE TABLE something (
  column1 INTEGER NOT NULL,
  column2 INTEGER NOT NULL,
  value,
  PRIMARY KEY ( column1, column2)
);

51voto

jsmarkus Points 652

Oui. Mais rappelez-vous que cette clé primaire autoriser NULL des valeurs dans les deux colonnes à plusieurs reprises.

Créer un tableau en tant que tel:

    sqlite> CREATE TABLE something (
column1, column2, value, PRIMARY KEY (column1, column2));

Maintenant cela fonctionne sans aucun avertissement:

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

17voto

Ken Reed Points 71

Champs de clé primaire doit être déclarée non nulle (ce qui est non standard, comme la définition d'une clé primaire, c'est qu'il doit être unique et ne pas null). Mais ci-dessous est une bonne pratique pour tous les multi-colonnes de clés primaires dans tous les SGBD.

create table foo
(
  fooint integer not null
  ,foobar string not null
  ,fooval real
  ,primary key (fooint, foobar)
)
;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X