sourcetip

SQL Create 문에서 명명된 외부 키 제약 조건 추가

fileupload 2023. 9. 5. 20:43
반응형

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

반응형