CREATE TRIGGER storagerecord_delete
ON Storagerecord 
FOR UPDATE
AS
--declare @a  int
IF exists (select Storagerecord.NUMBER
FROM Storagerecord where Storagerecord.NUMBER=0)
BEGIN
DELETE
FROM Storagerecord where Storagerecord.NUMBER=0
END
IF exist (select Storagerecord.NUMBER
FROM Storagerecord 
where Storagerecord.NUMBER>0 and Storagerecord.NUMBER<5)
BEGIN
print'The goods will be not enough,please stock it'
END
这样代价太大,每次触发都要扫描整个表哈,哈哈,哈哈哈......

解决方案 »

  1.   

    CREATE TRIGGER storagerecord_delete
    ON Storagerecord 
    FOR UPDATE
    AS
    --declare @a  int
    IF exists (select Storagerecord.NUMBER
    FROM Storagerecord,inserted i where Storagerecord.NUMBER=0 and i.id=Storagerecord.id)
    BEGIN
    DELETE Storagerecord
    FROM Storagerecord,inserted i where Storagerecord.NUMBER=0 and i.id=Storagerecord.id
    END
    IF exist (select Storagerecord.NUMBER
    FROM Storagerecord,inserted i
    where Storagerecord.NUMBER>0 and Storagerecord.NUMBER<5  and i.id=Storagerecord.id)
    BEGIN
    RAISERROR('The goods will be not enough,please stock it',16,1)  --RAISERROR客户端能得到
    END
    既然进来了,帮你优化下,不过错了不管哈,哈哈,哈哈哈......
      

  2.   

    CREATE TRIGGER storagerecord_delete
    ON Storagerecord 
    FOR UPDATE  --倒底是删除还是更新?
    AS
      

  3.   

    for update
    我的理解先删除,然后增加,不知对不对?
      

  4.   

    4 zjcxc 267288 你专家分在CSDN里排行老四
    厉害,我佩服你!