Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Possono esserci vincoli con lo stesso nome in un DB?

No:anche un vincolo è un oggetto di database e quindi il suo nome deve essere univoco.

Prova ad aggiungere ad es. il nome della tabella al tuo vincolo, in questo modo sarà univoco.

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
)

Fondamentalmente utilizziamo "FK_"(tabella figlio)_(tabella genitore)" per nominare i vincoli e siamo abbastanza soddisfatti di questa convenzione di denominazione.

Informazioni da MSDN

Che i nomi dei vincoli debbano essere univoci per lo schema (ovvero due schemi diversi nello stesso database possono contenere entrambi un vincolo con lo stesso nome) non è documentato in modo esplicito. Piuttosto è necessario presumere che gli identificatori degli oggetti del database debbano essere univoci all'interno dello schema contenitore se non diversamente specificato . Quindi il nome del vincolo è definito come:

Confrontalo con il nome di un index :

che restringe in modo esplicito l'ambito dell'identificatore.