У моїй базі даних SQL Server є таблиця конфігурації, і ця таблиця повинна мати колись один рядок. Щоб майбутні розробники зрозуміли це, я хотів би не допустити додавання більше одного ряду даних. Я вирішив використовувати для цього тригер, як нижче ...
ALTER TRIGGER OnlyOneConfigRow
ON [dbo].[Configuration]
INSTEAD OF INSERT
AS
BEGIN
DECLARE @HasZeroRows BIT;
SELECT @HasZeroRows = CASE
WHEN COUNT (Id) = 0 THEN 1
ELSE 0
END
FROM
[dbo].[Configuration];
IF EXISTS(SELECT [Id] FROM inserted) AND @HasZeroRows = 0
BEGIN
RAISERROR ('You should not add more than one row into the config table. ', 16, 1)
END
END
Це не призводить до помилок, але не дозволяє першому рядку зайти.
Чи існує більш ефективний / більш самоосмислюючий спосіб обмеження кількості рядків, які можна вставити в таблицю, лише на 1, ніж це? Чи пропускаю я якусь вбудовану функцію SQL Server?