2013-07-08 74 views
2

我正在sql server 2008上工作,我有這種情況,我想檢查一個列值不應超過10次插入相同的值觸發器停止插入多於10次的記錄

我的表是

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

我想對開發者進行檢查,同樣的值應該只記錄10次,不超過這一點。親切指導我

+1

如果目前有,比方說,9行,並插入嘗試添加2行應該發生什麼補充檢查約束?另外,超出限制時的一般行爲應該是什麼?無聲地丟棄舊的行或新的行,或拋出一個錯誤,或其他? –

+0

使用後插入操作創建觸發器。聲明一個整型變量值@ counter,然後選擇: SELECT @ counter = COUNT(*)FROM yourtable WHERE devs = NEW.devs 如果@ counter> 10用最大的uID執行dev的DELETE操作。 – makciook

回答

0
while (select count(*) from dev where devs='sls')<10 
insert into dev values (0,'SLS') 
0

您可以在表

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)