У меня есть таблица конфигурации в моей базе данных 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?