2
我正在sql server 2008上工作,我有這種情況,我想檢查一個列值不應超過10次插入相同的值觸發器停止插入多於10次的記錄
我的表是
uID devs
---------------
1 SLS
2 SRS
3 SLS
我想對開發者進行檢查,同樣的值應該只記錄10次,不超過這一點。親切指導我
我正在sql server 2008上工作,我有這種情況,我想檢查一個列值不應超過10次插入相同的值觸發器停止插入多於10次的記錄
我的表是
uID devs
---------------
1 SLS
2 SRS
3 SLS
我想對開發者進行檢查,同樣的值應該只記錄10次,不超過這一點。親切指導我
while (select count(*) from dev where devs='sls')<10
insert into dev values (0,'SLS')
您可以在表
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)
如果目前有,比方說,9行,並插入嘗試添加2行應該發生什麼補充檢查約束?另外,超出限制時的一般行爲應該是什麼?無聲地丟棄舊的行或新的行,或拋出一個錯誤,或其他? –
使用後插入操作創建觸發器。聲明一個整型變量值@ counter,然後選擇: SELECT @ counter = COUNT(*)FROM yourtable WHERE devs = NEW.devs 如果@ counter> 10用最大的uID執行dev的DELETE操作。 – makciook