복붙노트

[SQL] "외래 키"와 "제약 외래 키"의 차이

SQL

"외래 키"와 "제약 외래 키"의 차이

나는 예를 들어 내가 같은 테이블을 만들 수 있음을 의미

create table XTable
( 
  idt int not null primary key,
  value nvarchar(50),
  idq int,
  constraint fk_idq foreign key(idq) references YTable(idq)
)

나는이처럼 만들 수 있습니다

create table XTable
(
  idt int not null primary key,
  value nvarchar(50),
  idq int,
  foreign key(idq) references YTable(idq)
)

나는 보통 두 번째 예에서와 같이 테이블을 생성하지만 지금은 첫 번째 예제에 대해 궁금 해요. 차이점은 무엇입니까?

해결법

  1. ==============================

    1.첫 번째 옵션은 제약 조건 이름을 지정 순전히이다.

    첫 번째 옵션은 제약 조건 이름을 지정 순전히이다.

    SQL FOREIGN KEY 제약 조건에서

    , 다음과 같은 SQL 구문을 사용, 여러 열에서 FOREIGN KEY 제약 조건을 정의하는 FOREIGN KEY 제약 조건의 이름 허용하려면

    CREATE TABLE Orders
    (
      O_Id int NOT NULL,
      OrderNo int NOT NULL,
      P_Id int,
      PRIMARY KEY (O_Id),
      CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
      REFERENCES Persons(P_Id)
    )
    

    또한,에서 하나가 [제약 constraint_name을]을 볼 수 있습니다 TABLE (Transact-SQL)를하는 것은 선택 사항입니다.

  2. ==============================

    2.첫번째는 외래 키에 사용자 정의 이름을 할당 번째 외래 키를 생성하는 시스템의 이름을 지정한다.

    첫번째는 외래 키에 사용자 정의 이름을 할당 번째 외래 키를 생성하는 시스템의 이름을 지정한다.

    사용자 정의 외래 키 이름이 같은 이후의 문 유용 할 수 있습니다 :

    ALTER TABLE XTable DROP    CONSTRAINT fk_idq;
    ALTER TABLE XTable ENABLE  CONSTRAINT fk_idq;
    ALTER TABLE XTable DISABLE CONSTRAINT fk_idq;
    

    그것은 당신이 먼저 그 이름을 발견 가지고, 시스템에서 생성 된 이름이 제약 조건을 변경하기 어렵습니다.

  3. ==============================

    3.그렇다, 정말 아무것도 이름을 제어하지에서. 당신이 그것을 생략하면 SQL Server는 이름을 제공합니다. 참고로, 당신은이 구문 (SQL 바이올린)가 필요합니다 :

    그렇다, 정말 아무것도 이름을 제어하지에서. 당신이 그것을 생략하면 SQL Server는 이름을 제공합니다. 참고로, 당신은이 구문 (SQL 바이올린)가 필요합니다 :

    create table XTable
    (
      idt int not null primary key,
      value nvarchar(50),
      idq int references YTable(idq)
    )
    

    다음은 풀러의 예입니다.

  4. from https://stackoverflow.com/questions/12652629/differences-between-foreign-key-and-constraint-foreign-key by cc-by-sa and MIT license