2017-12-21 21 views
0

Ich habe eine SQL Server-Tabelle, die PrimärschlüsselWie andere Primärschlüssel in SQL Server hinzufügen

CompanyID 
ClientID 
ReportName 

ich eine Spalte hinzufügen müssen hat, dass ein zusätzlicher Schlüssel und eine inkrementierte ID ist.

alter table Exports 
add id int identity(1,1) 

Wie schreibe ich die Anweisung, um dies auch zu einem Schlüssel zu machen?

+4

Sie können nicht 2 Primärschlüssel haben! [Das steht auch hier!] (Https://docs.microsoft.com/en-us/sql/relational-databases/tables/create-primary-keys) –

+2

Was Sie zur Zeit haben können, ist ein * zusammengesetzter * Primärschlüssel . Wenn dies der Fall ist, müssen Sie klar sagen, ob Sie versuchen * eine weitere Spalte zu diesem zusammengesetzten Schlüssel * hinzuzufügen oder ob Sie einen * separaten * Sekundärschlüssel deklarieren möchten. Wie Radu sagt, gibt es nur 1 PK pro Tisch. –

+0

Er kann dem vorhandenen PrimaryKey eine weitere Spalte hinzufügen, obwohl die anderen Spalten bei einer Identitätsspalte einen eindeutigen Index haben sollten, anstatt Teil des Primärschlüssels zu sein. –

Antwort

-2

Sie können nur eine Primärschlüssel- oder Identitätsspalte in jeder Tabelle in SQL Server haben.

Wenn Sie eine weitere Spalte als Primärschlüssel haben möchten, können Sie die Kombination der Spalten als Primärschlüssel verwenden.

Oder Sie können die Einschränkungen eingestellt UNIQUE und NOT NULL an den Säulen, so dass sie als Primärschlüssel gleichen handeln (aber diese Spalten können nicht als Fremdschlüssel bezeichnet)

Bei Auto inkrementelle Spalten (Identität), Sie können nur 1 Identitätsspalte pro Tabelle haben. Es kann auch als Primärschlüssel festgelegt werden. Andernfalls, wenn Sie mehrere Spalten als Autoinkrement benötigen, können Sie wahrscheinlich eine berechnete Spalte, einen Trigger oder ein sequence Objekt verwenden, von dem Sie die Werte für jeden Datensatz abrufen können

+0

Ihr erster Satz ist falsch (und wird von Ihrem zweiten widersprochen). Sie können mehrere Spalten in einem Primärschlüssel haben. –

+0

Aktualisierte die Antwort @Damien_The_Unbeliever –

+0

Und ein Fremdschlüssel kann sich auf eine eindeutige Einschränkung beziehen; Es ist nicht auf Primärschlüssel beschränkt. – SMor

Verwandte Themen