Tôi có một bảng cấu hình trong cơ sở dữ liệu SQL Server của mình và bảng này chỉ nên có một hàng. Để giúp các nhà phát triển trong tương lai hiểu điều này, tôi muốn ngăn chặn nhiều hơn một hàng dữ liệu được thêm vào. Tôi đã chọn sử dụng một kích hoạt cho việc này, như dưới đây ...
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
Điều này không gây ra lỗi nhưng không cho phép hàng đầu tiên đi vào.
Ngoài ra, có cách nào hiệu quả hơn / tự giải thích hơn về việc giới hạn số lượng hàng có thể được chèn vào một bảng chỉ còn 1, hơn thế này không? Tôi có thiếu tính năng SQL Server tích hợp nào không?