ฉันมีตารางการกำหนดค่าในฐานข้อมูล 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 หรือไม่