gpt4 book ai didi

sql - 对表进行约束以限制要存储的记录数

转载 作者:太空狗 更新时间:2023-10-30 01:56:25 24 4
gpt4 key购买 nike

我有一个数据库,其中有两个表 AdsImagesAds表中有一个主键adid,它是Images表中的外键。

我想在 Images 表上创建一个约束,Images 表中不能存储超过 5 个 adid

我需要知道这种类型的约束叫什么,以及如何在 SQL Server 中使用查询来完成。

最佳答案

没有强制执行该规则的约束,但是像下面这样的触发器可以做到这一点:

CREATE TRIGGER Images_not_more_than_five_per_add
ON Images FOR INSERT
AS
DECLARE @RowCount int
SET @RowCount = @@ROWCOUNT
SET NOCOUNT ON
IF @RowCount = 1
BEGIN
IF (SELECT COUNT(*) FROM Images WHERE Images.addid = (SELECT addid FROM inserted)) > 5
BEGIN
RAISERROR('No more than five images per add are allowed', 16, -1)
ROLLBACK
RETURN
END
END
ELSE
BEGIN
IF EXISTS (
SELECT *
FROM
Images
INNER JOIN (
SELECT DISTINCT addid FROM inserted
) I ON Images.addid = I.addid
GROUP BY
Images.addid
HAVING COUNT(*) > 5
)
BEGIN
RAISERROR('No more than five images per add are allowed', 16, -1)
ROLLBACK
RETURN
END
END

关于sql - 对表进行约束以限制要存储的记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com