Ich habe eine Konfigurationstabelle in meiner SQL Server-Datenbank und diese Tabelle sollte immer nur eine Zeile enthalten. Damit zukünftige Entwickler dies besser verstehen, möchte ich verhindern, dass mehr als eine Datenzeile hinzugefügt wird. Ich habe mich dafür entschieden, einen Auslöser zu verwenden, wie unten dargestellt ...
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
Dies löst keinen Fehler aus, lässt jedoch nicht zu, dass die erste Zeile eingegeben wird.
Gibt es auch eine effektivere / selbsterklärendere Möglichkeit, die Anzahl der Zeilen, die in eine Tabelle eingefügt werden können, auf nur 1 zu beschränken? Fehlt mir eine integrierte SQL Server-Funktion?