当前位置: 首页 > 面试题库 >

限制表以限制要存储的记录数

程和畅
2023-03-14
问题内容

我有一个数据库,有两个表AdsImages。表中有一个主键adidAds表中有一个外键Images

我想在表上创建一个约束,表Imagesadid最多可以存储5个约束Images

我需要知道这种约束的类型,以及如何通过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


 类似资料:
  • 在MariaDB数据库中,使用语句和子句从表中检索一个或多个记录。 语法: 示例1: 以降序检索记录: 使用语句并带有子句查询表中的数据。结果列的值按降序显示,为。参考如下语句 - 执行上面查询语句,得到以下结果 - 示例2: 按列的值升序检索记录: 执行上面查询语句,得到以下结果 - 示例3:分页 在应用程序中,由于数据记录太多,不能全在一个页面中全部显示,我们经常要使用分页来显示。假设每页显示

  • 问题内容: 我要在此处实现的条件是,sqlite数据库仅保存最近的1000条记录。每个记录都有时间戳记。立即生效的低效逻辑之一就是检查记录总数。如果它们超过1000,则只需删除掉到外围的那些。 但是,我将必须对每个INSERT进行此检查,这会使事情效率很低。 问题答案: 您可以为此使用一个隐式的“ rowid”列。 假设您没有以其他方式手动删除行: 您可以使用API函数或 如果您不需要 正好有 1

  • 问题内容: 临时表中的记录是否有限制。.我尝试使用130万条记录..将来我可能要根据应用程序的要求处理数十亿条记录。.可能吗?如果我能知道记录的限制,那么我可以尝试从源数据库中拆分记录,并在限制范围内进行管理。提前致谢 问题答案: tempdb与任何其他数据库之间的差异很小,尤其是在限制方面。 如果可以将其存储在用户表中,那么也可以将其存储在临时表中。它不需要放入RAM,因为tempdb像其他任何

  • 问题内容: 关闭。 这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 8年前关闭。 改善这个问题 我在使用MySQL的数据库上执行SQL查询,但仅从预期的24000行中获取了前1000行。如果将结果导出到XML表单,我将再次获得前1000个。有没有办法禁用该限制并取回所有行?否则,我将不得不合并24个XML文件:/ 问题答案: 请执行

  • 最近我一直在使用GitHub,我想知道,GitHub上托管的文件的存储库限制是多少。通用域名格式?我一直想知道这一点,因为我考虑使用GitLab,因为它允许每个存储库使用10GB。

  • 我对block blob存储是如何工作的有点困惑,所以我对这些限制是如何工作的有点困惑(从我读到的内容来看,大多数人甚至不会接近这些限制,但我仍然想知道它是如何应用的)。我一直在读这篇文章 限制似乎是这样的 块BLOB存储文本和二进制数据,最多约4.7TB。块BLOB由可以单独管理的数据块组成。 或者block blob是否意味着如果我有img001并且它是1GB,它将被分离成块,并且限制为50,