sql >> Base de Datos >  >> RDS >> Sqlserver

¿Puede haber restricciones con el mismo nombre en una base de datos?

No:una restricción también es un objeto de base de datos y, por lo tanto, su nombre debe ser único.

Intente agregar, p. el nombre de la tabla a su restricción, de esa manera será único.

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
)

Básicamente usamos "FK_"(tabla secundaria)_(tabla principal)" para nombrar las restricciones y estamos muy contentos con esta convención de nomenclatura.

Información de MSDN

Que los nombres de las restricciones tengan que ser únicos para el esquema (es decir, dos esquemas diferentes en la misma base de datos pueden contener una restricción con el mismo nombre) no está documentado explícitamente. Más bien, debe asumir que los identificadores de los objetos de la base de datos deben ser únicos dentro del esquema contenedor a menos que se especifique lo contrario . Entonces, el nombre de la restricción es definido como:

Compare esto con el nombre de un index :

lo que reduce explícitamente el alcance del identificador.