Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Може ли да има ограничения с едно и също име в DB?

Не - ограничението също е обект на база данни и следователно името му трябва да е уникално.

Опитайте да добавите напр. името на таблицата към вашето ограничение, по този начин тя ще бъде уникална.

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
)

Ние основно използваме "FK_"(child table)_(parent table)", за да именуваме ограниченията и сме доста доволни от тази конвенция за именуване.

Информация от MSDN

Това, че имената на ограниченията трябва да бъдат уникални за схемата (т.е. две различни схеми в една и съща база данни могат да съдържат ограничение с едно и също име), не е изрично документирано. По-скоро трябва да приемете, че идентификаторите на обектите на базата данни трябва да са уникални в съдържащата се схема освен ако не е посочено друго . Така че името на ограничението е дефинирано като:

Сравнете това с името на индекс :

което изрично стеснява обхвата на идентификатора.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво представлява нулевият символен литерал в TSQL?

  2. Най-бързият начин за изпълнение на една и съща заявка няколко пъти в SQL Server

  3. CONVERT() от дата/час към примери за низове в SQL Server

  4. Използвайте OBJECTPROPERTY(), за да определите дали даден обект е изглед в SQL Server

  5. Грешка при закръгляване на SQL Server, даване на различни стойности