J'ai une table de configuration dans ma base de données SQL Server et cette table ne doit avoir qu'une seule ligne. Pour aider les futurs développeurs à comprendre cela, j'aimerais empêcher l'ajout de plusieurs lignes de données. J'ai choisi d'utiliser un déclencheur pour cela, comme ci-dessous ...
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
Cela ne génère pas d'erreur mais ne permet pas à la première ligne d'entrer.
Existe-t-il également un moyen plus efficace / plus explicite de limiter le nombre de lignes pouvant être insérées dans une table à seulement 1? Suis-je en train de manquer une fonctionnalité SQL Server intégrée?