Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Pode haver restrições com o mesmo nome em um banco de dados?


Não - uma restrição também é um objeto de banco de dados e, portanto, seu nome precisa ser exclusivo.

Tente adicionar, por exemplo o nome da tabela para sua restrição, dessa forma ela será única.
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
)

Basicamente, usamos "FK_"(tabela filha)_(tabela pai)" para nomear as restrições e estamos bastante satisfeitos com essa convenção de nomenclatura.

Informações do MSDN

Que os nomes de restrição devem ser exclusivos para o esquema (ou seja, dois esquemas diferentes no mesmo banco de dados podem conter uma restrição com o mesmo nome) não está explicitamente documentado. Em vez disso, você precisa assumir que os identificadores dos objetos do banco de dados devem ser exclusivos dentro do esquema contido a menos que especificado de outra forma . Portanto, o nome da restrição é definido Como:

Compare isso com o nome de um índice :

que restringe explicitamente o escopo do identificador.