2009-01-01 5 views
0

J'ai un script de requêtes MySQL que j'utilise et qui fonctionne.Que utiliser pour SQL Server au lieu de "clé"?

J'essaie d'exécuter les mêmes requêtes dans Microsoft SQL Server et il y a une chose que je ne comprends pas. MySQL utilise "clé" pour définir une clé composée de différents champs.

Quelle est la manière de faire la même chose dans SQL Server?

Merci!

-Adeena

Répondre

2

Vous pouvez déclarer une clé primaire qui se compose de plusieurs colonnes en TSQL (langage de requête SQL serveur)

ALTER TABLE product 
    ADD CONSTRAINT prim_prod PRIMARY KEY(product_foo, product_bar) 

Si vous utilisez studio de gestion SQL Server, vous pouvez également y parvenir via "Modifier la table".

+0

hmm ... Je pensais qu'il ne pouvait y avoir qu'une seule clé primaire? – adeena

+1

Il existe une seule clé primaire, mais elle peut comporter plusieurs colonnes. De cette façon, product_foo et product_bar n'ont pas besoin d'être uniques, mais considérés ensemble, ils doivent être uniques. Je préfère toujours les clés primaires à champ unique, mais cela est possible. – recursive

+0

Oui, une seule clé primaire est autorisée. Mais vous pouvez commencer avec une table SANS clé primaire. – splattne

1

En MySQL, le mot-clé KEY est simplement un synonyme de INDEX. Les deux suivantes sont équivalentes:

CREATE TABLE foo (
    id  SERIAL PRIMARY KEY, 
    ctime DATETIME, 
    KEY ctkey (ctime) 
); 

CREATE TABLE foo (
    id  SERIAL PRIMARY KEY, 
    ctime DATETIME, 
    INDEX ctidx (ctime) 
); 

Dans Microsoft SQL Server, le plus proche équivalent est INDEX. Pour autant que je sache, pour créer un index sur une colonne dans Microsoft SQL Server, vous utilisez CREATE INDEX. Vous pouvez également créer des contraintes qui génèrent des index dans le cadre d'une instruction CREATE TABLE, mais si vous avez juste besoin d'un index, utilisez CREATE INDEX.

CREATE TABLE foo (
    id  BIGINT IDENTITY PRIMARY KEY, 
    ctime DATETIME 
); 

CREATE INDEX ctidx ON foo(ctime); 

Voir également la documentation sur CREATE INDEX.

Questions connexes