SQL Create 문에서 명명된 외부 키 제약 조건 추가
현재 다음을 보유하고 있습니다.
CREATE TABLE galleries_gallery (
id INT NOT NULL PRIMARY KEY IDENTITY,
title NVARCHAR(50) UNIQUE NOT NULL,
description VARCHAR(256),
templateID INT NOT NULL REFERENCES galleries_templates(id),
jsAltImgID INT NOT NULL REFERENCES libraryImage(id)
jsAltText NVARCHAR(500),
dateCreated SMALLDATETIME NOT NULL,
dateUpdated SMALLDATETIME NOT NULL,
lastUpdatedBy INT,
deleted BIT NOT NULL DEFAULT 0
);
그러나 이렇게 하면 나중에 제약 조건을 삭제하기 어렵게 하는 자동 생성 이름의 제약 조건이 추가됩니다.제약 조건의 이름을 지정하려면 무엇을 추가해야 합니까?
위의 예는 SQL Server이며 Postgre에도 필요합니다.SQL.
SQL Server에서 다음을 사용할 수 있습니다.constraint
키워드: 외부 키를 인라인으로 정의하고 동시에 이름을 지정합니다.
다음은 업데이트된 스크립트입니다.
CREATE TABLE galleries_gallery (
id INT NOT NULL PRIMARY KEY IDENTITY,
title NVARCHAR(50) UNIQUE NOT NULL,
description VARCHAR(256),
templateID INT NOT NULL
CONSTRAINT FK_galerry_template
REFERENCES galleries_templates(id),
jsAltImgID INT NOT NULL
CONSTRAINT FK_gallery_jsAltImg
REFERENCES libraryImage(id)
jsAltText NVARCHAR(500),
dateCreated SMALLDATETIME NOT NULL,
dateUpdated SMALLDATETIME NOT NULL,
lastUpdatedBy INT,
deleted BIT NOT NULL DEFAULT 0
);
저는 방금 테스트를 했고 분명히 같은 것이 Postgre에서도 작동합니다.SQL: http://www.sqlfiddle.com/ #!12/2ae29
CREATE TABLE galleries_gallery (
id INT NOT NULL,
title NVARCHAR(50) NOT NULL,
description VARCHAR(256),
templateID INT NOT NULL,
jsAltImgID INT NOT NULL,
jsAltText NVARCHAR(500),
dateCreated SMALLDATETIME NOT NULL,
dateUpdated SMALLDATETIME NOT NULL,
lastUpdatedBy INT,
deleted BIT NOT NULL DEFAULT 0,
CONSTRAINT galleries_gallery_id_pk PRIMARY KEY (id),
CONSTRAINT galleries_gallery_title_uk UNIQUE (title),
CONSTRAINT galleries_gallery_tmpltid_fk FOREIGN KEY (templateID) REFERENCES galleries_templates (id),
CONSTRAINT galleries_gallery_jsAltImgIDfk FOREIGN KEY (isAltImgID) REFERENCES libraryImage (id)
);
제약 조건 키워드를 사용하여 제약 조건 이름을 지정합니다.IMO 이 탭 종료를 수행하는 것이 더 깨끗하고 읽기 쉽습니다.인라인이 아닌 LE(두 번째 답변에서 알 수 있듯이 둘 다 허용 가능)이며, 이를 통해 동일한 표에 대한 여러 FK뿐만 아니라 여러 열에 고유 제약 조건을 만들 수도 있습니다.CONSTRINT 키워드는 null이 아닌 경우 사용할 수 없습니다. null이 아닌 제약 조건을 변경하려면 ALTER TABLE MODIFY COLUMN... null이 필요합니다.제약 조건 이름은 30자 이하여야 합니다.표준 명명 규칙을 사용합니다.개인적으로 저는 항상 열 이름 앞에 테이블 이름을 추가하여 사용합니다. 이 테이블 이름은 제약 조건 이름이 30자를 초과할 경우 디바우딩되고 제약 조건 유형(pk, fk, uk 등)이 뒤따릅니다.
언급URL : https://stackoverflow.com/questions/14511796/adding-named-foreign-key-constraints-in-a-sql-create-statement
'sourcetip' 카테고리의 다른 글
Powershell 전자 메일 메시지 - 여러 수신자에게 보내는 전자 메일 (0) | 2023.09.05 |
---|---|
MYSQL의 하위 쿼리에서 LIMIT 키워드를 사용하는 대신 (0) | 2023.09.05 |
@열(고유=true)이 작동하지 않는 것 같습니다. (0) | 2023.09.05 |
Ubuntu Docker 이미지 내에서 wget을 실행하는 방법은 무엇입니까? (0) | 2023.09.05 |
윈도우즈 PowerShell에서 Node.js 환경 변수 전달 (0) | 2023.09.05 |