sql >> Databasteknik >  >> RDS >> Sqlserver

Kan det finnas begränsningar med samma namn i en DB?

Nej - en begränsning är också ett databasobjekt, och därför måste dess namn vara unikt.

Prova att lägga till t.ex. tabellnamnet till din begränsning, på så sätt blir det unikt.

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
)

Vi använder i princip "FK_"(underordnad tabell)_(överordnad tabell)" för att namnge begränsningarna och är ganska nöjda med denna namnkonvention.

Information från MSDN

Att begränsningsnamn måste vara unika för schemat (dvs. två olika scheman i samma databas kan båda innehålla en begränsning med samma namn) är inte explicit dokumenterat. Snarare måste du anta att identifierarna för databasobjekt måste vara unika inom det innehållande schemat om inte annat anges . Så begränsningsnamnet är definierat som:

Jämför detta med namnet på ett index :

vilket uttryckligen begränsar räckvidden för identifieraren.



  1. Sqlite-data och automatiskt skapade knappar på ScrollPane

  2. Returnera en lista över triggers i SQL Server

  3. AttributeError:'tuple'-objektet har inget attribut 'encode' - MySQLdb Python

  4. Försöker räkna ut maxlängden på Rowid i Oracle