2016-04-16 12 views
1

Ich möchte zum Beispiel, dass Benutzer Name JHONE und Alter 25 hinzufügen, so dass nächste Mal kann er JHONE, 26 oder ALEX 25, aber nicht JHONE, 25 wieder hinzufügen.SQL-Set UNIQUE nur für zwei Spalten

Also ich suche nach zwei Spalten einzigartig nicht separat.

P.S. Es tut mir leid, wenn die gleiche Frage schon einmal erwähnt wurde.

EDIT:

Das ist mein Beispiel ist:

enter image description here

Würde userIdG machen mögen und doWithCar wie diese

102163096246025413003 Ansicht

wird 1.021.630 96246025413003 Kaufen

102163096246025413003 Lassen

102163096246025413003 Verkaufen

Und für Id = 102163096246025413003 Sie weitere Werte nicht hinzufügen können, WEIL Spalte doWithCar nur 4 mögliche Wahl Blick haben, kaufen, mieten und verkaufen

+0

Zuerst bearbeiten Sie nicht auf diese Weise, weil Sie vorhandene Antworten ungültig machen. Zweitens sieht es wie 'PhpMyAdmin' aus, also ist es eher **' MySQL' ** nicht ** 'Microsoft SQL Server' ** Drittens: Es ist eine klassische chamelon Frage. Zusammenfassend fügen Sie 'UNIQUE (userIdG, doWithCar)' hinzu. – lad2025

+0

@ lad2025 Sorry, wenn es wie Chamäleonfrage aussieht. Ich versuche nur, das Konzept zu verstehen, aber leider habe ich es nicht verstanden, deshalb frage mit der existierenden Ausgabe –

Antwort

3

Sie mehr als eine Spalte in UNIQUE angeben konnte:

CREATE TABLE tab(ID INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(100), age INT 
       ,UNIQUE(name, age)); 

INSERT INTO tab(name, age) VALUES ('John', 25); 
INSERT INTO tab(name, age) VALUES ('John', 26);     

-- INSERT INTO tab(name,age) VALUES ('John', 25); 
-- Violation of UNIQUE KEY constraint 'UQ__tab__CF0426FD76D3370A'. 
-- Cannot insert duplicate key in object 'dbo.tab'. 
-- The duplicate key value is (John, 25). 
-- The statement has been terminated. 

SELECT * FROM tab; 

LiveDemo

Hinweis:

Sie sollten date of birth speichern und sich nicht (age berechnete Spalte und setzen UNIQUE(name, dob) oder machen) altern.


das ist, was ich nicht verstehe), wie Datenbank wird wissen, dass es zwei Spalten als eindeutig sein sollte und nicht jeder Spalte ist einzigartig

Dies sind unterschiedliche Konzepte. DB "kennt" es aus UNIQUE Constraint-Definition:

UNIQUE(userIdG,doWithCar)    -- pair of column is unique 
!= 
UNIQUE(userIdG),UNIQUE(doWithCar)  -- each column is unique 
+0

Ich habe meine Frage aktualisiert, also muss ich userIdG und doWithCar als einzigartig einstellen und (das ist was ich nicht verstehe) wie Datenbank wird wissen, dass es zwei Spalten als einzigartig sein sollte und nicht jede Spalte einzigartig ist? –

+0

Update sinnvoll jetzt,))) Jetzt sollte ich ALTER TABLE userChioce ADD INDEX verwenden UQ_IDDO UNIQUE (userIdG, doWithCar) ??? –

+0

ERSTELLEN EINZIGARTIGER INDEX UQ_IDDO EINZIGARTIG ON userChioce (userIdG, doWithCar) oder gefällt das? –