Echivalentul SQL Server pentru indexul MySQL UNIQUE? (Administrarea bazelor de date, Mysql, Mysql 5, Sql Server Express)

John M a intrebat.

În MySQL (5.1) pot crea un index pe un câmp care este de tip UNIQUE. Acest lucru asigură faptul că câmpul conține numai elemente unice.

Există ceva echivalent cu această funcție în SQL Server 2008?

Un exemplu de sintaxă MySQL Table CREATE cu indice UNIQUE:

CREATE TABLE `routelist` (
    `RouteID` INT(11) NOT NULL AUTO_INCREMENT,
    `RouteName` VARCHAR(20) NOT NULL,
    `Active` TINYINT(4) NOT NULL DEFAULT '1',
    PRIMARY KEY (`RouteID`),
    UNIQUE INDEX `RouteName` (`RouteName`)
)
COMMENT='3.29.2012'
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=8;

Comentarii

  • Ați făcut vreo căutare? SQL-Server Constrângeri UNIQUE –  > Por ypercubeᵀᴹ.
  • @ypercube Într-adevăr. Al doilea rezultat în Google pentru „SQL Server UNIQUE Index”…  > Por swasheck.
  • Am încercat să caut echivalentul SQL server pentru indexul unic MySQL și nu am primit rezultate bune. –  > Por John M.
2 răspunsuri
a_calul_cu_nu_nume

Sintaxa lui MySQL este doar o scurtătură pentru un index de creare.

Deci, în SQL Server utilizați:

CREATE UNIQUE INDEX routename ON routelist (routename);

funcționează în MySQL la fel de bine.

Comentarii

  • Prescurtarea MySQL este de a crea atât o constrângere UNIQUE, cât și un indice UNIQUE. Nu puteți crea doar unul dintre cele două. –  > Por ypercubeᵀᴹ.
  • În SQL-Server, crearea unei constrângeri UNIQUE, creează și un indice UNIQUE. Dar crearea unui indice nu creează și o constrângere UNIQUE. Bineînțeles, unicitatea este impusă, dar cred că FK-urile nu pot face referire la această coloană în acest caz. (Trebuie să testez acest lucru) –  > Por ypercubeᵀᴹ.
  • Nu, greșeala mea. Puteți adăuga FK, chiar dacă este definit doar un indice unic: Index unic și cheie externă –  > Por ypercubeᵀᴹᴹ.
ypercubeᵀᴹ

O notă. Există o mare diferență între UNIQUE constrângerile din SQL-Server și toate celelalte SGBD (inclusiv MySQL) și standardul SQL, în care o coloană cu constrângere Unique poate avea mai multe Null-uri. Dar în SQL-Server este permis un singur Null:

De asemenea, spre deosebire de constrângerile PRIMARY KEY, constrângerile UNIQUE permit valoarea NULL. Cu toate acestea, ca și în cazul oricărei valori care participă la o constrângere UNIQUE, este permisă doar o singură valoare null pentru fiecare coloană.

Comentarii

  • Există vreo diferență între un index unic și o constrângere unică pentru SQL Server (în ceea ce privește multiplele NULL-uri)?  > Por un_câine_cu_numele_nimic.
  • Nu cred că este așa: UNIQUE Constraint și Unique Index –  > Por ypercubeᵀᴹ.
  • +1 Bun indicator privind diferența dintre SQL server și alte RDBM-uri. –  > Por StanleyJohns.