【问题标题】:Trigger to stop a record from inserting more then 10time触发以阻止记录插入超过 10 次
【发布时间】:2013-07-08 14:30:18
【问题描述】:

我正在使用 sql server 2008,我有一种情况,我想检查一个列值,相同的值不应插入超过 10 次

我的桌子是

uID       devs 
---------------
 1        SLS 
 2        SRS
 3        SLS

我想检查一下开发人员,相同的值只能记录 10 次,不能超过。请指导我

【问题讨论】:

  • 如果当前有 9 行,并且插入尝试添加 2 行,会发生什么?另外,超出限制时的一般行为应该是什么?默默地丢弃旧行或新行,或者抛出错误,还是别的什么?
  • 使用插入后操作创建触发器。声明一个整数变量值@counter,然后选择:SELECT @counter = COUNT(*) FROM yourtable WHERE devs = NEW.devs If @counter > 10 对uID最大的dev进行DELETE。

标签: sql sql-server sql-server-2005 sql-server-2008-r2


【解决方案1】:
while (select count(*) from dev where devs='sls')<10
insert into dev values (0,'SLS')

【讨论】:

    【解决方案2】:

    你可以在你的表上添加检查约束

    CREATE FUNCTION CountByDevs()
        RETURNS INT
        AS
        BEGIN
            DECLARE @Count INT
    
            SELECT @Count = COUNT(*) FROM MyTable group by devs having COUNT(1)>10
            RETURN @Count
        END
    
    
        ALTER TABLE MyTable add CONSTRAINT Chk_MaxDevsAllowed
            CHECK (dbo.CountByDevs() <= 10)
    

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 2015-11-11
      • 1970-01-01
      相关资源
      最近更新 更多