Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Kann es in einem DB gleichnamige Constraints geben?

Nein - eine Einschränkung ist auch ein Datenbankobjekt, und daher muss ihr Name eindeutig sein.

Versuchen Sie, z. den Tabellennamen zu Ihrer Einschränkung, damit er eindeutig ist.

CREATE TABLE BankAccount
(
    BankAccountID   INT            PRIMARY KEY,
    EmployerCode    VARCHAR(20)    NOT NULL,
    Amount          MONEY          NOT NULL,
    CONSTRAINT FK_BankAccount_Employer 
        FOREIGN KEY (EmployerCode) REFERENCES Employer
)

Wir verwenden grundsätzlich "FK_"(untergeordnete Tabelle)_(übergeordnete Tabelle)", um die Einschränkungen zu benennen, und sind mit dieser Namenskonvention ziemlich zufrieden.

Informationen von MSDN

Dass Einschränkungsnamen für das Schema eindeutig sein müssen (dh zwei verschiedene Schemas in derselben Datenbank können beide eine Einschränkung mit demselben Namen enthalten), ist nicht explizit dokumentiert. Vielmehr müssen Sie davon ausgehen, dass die Bezeichner von Datenbankobjekten innerhalb des enthaltenden Schemas eindeutig sein müssen, sofern nicht anders angegeben . Der Einschränkungsname ist also definiert als:

Vergleichen Sie dies mit dem Namen eines Index :

was den Geltungsbereich des Bezeichners explizit einschränkt.