SQL Ограничение компонента сервера или ограничение для более чем одного столбца - PullRequest
0 голосов
/ 07 февраля 2020

Я хочу создать таблицу с рабочими деталями, такими как:

CRAETED_ON DATETIME NOT NULL DEFAULT GETDATE(),
CREATED_BY VARCHAR(10) NOT NULL,
DELETED_ON DATETIME NULL,
DELETED_BY VARCHAR(10) NULL

Я хочу поставить ограничение IF DELETED_ON обновлено, тогда они должны предоставить DELETED_BY.

ОБА быть NULL или оба не должны быть NULL, разрешены. Один NULL и другой NOT NULL не допускаются.

1 Ответ

3 голосов
/ 08 февраля 2020

Это может быть выполнено с помощью проверочного ограничения на уровне таблицы, при условии, что вы хотите, чтобы ограничение применялось как к вставкам, так и к обновлениям:

CREATE TABLE dbo.Example(
    CREATED_ON  DATETIME NOT NULL DEFAULT GETDATE(),
    CREATED_BY  VARCHAR(10) NOT NULL,
    DELETED_ON  DATETIME NULL,
    DELETED_BY  VARCHAR(10) NULL
    ,CONSTRAINT IF_DELETED_ON CHECK ((DELETED_ON IS NULL AND DELETED_BY IS NULL) OR  (DELETED_ON IS NOT NULL AND DELETED_BY IS NOT NULL))
);
...