uj5u.com熱心網友回復:
可以用觸發器,這時候只是提示還是不允許插入?uj5u.com熱心網友回復:
這個時候是不允許插入或更新,請問能否寫一下這個陳述句,我對觸發器完全不了解,謝謝
uj5u.com熱心網友回復:
這個是針對每次插入是一樣品號的情況CREATE TRIGGER dbo.A_tri
on [dbo].B
INSTEAD OF INSERT,UPDATE
AS
DECLARE @Ph NVARCHAR(20);
DECLARE @sum1 DECIMAL
DECLARE @sum2 DECIMAL
SELECT @Ph=Inserted.PGH FROM Inserted
SET @sum2 = (SELECT SUM(cl) FROM Inserted)
SET @sum2 = @sum2+(SELECT SUM(CL) FROM B WHERE PGH = @Ph)
SET @sum1 = (SELECT SUM(SL) FROM A WHERE PH = @Ph)
IF @sum2>@sum1
BEGIN
RAISERROR('數量超了',16,8)
END
ELSE
IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
BEGIN
INSERT INTO B SELECT * FROM Inserted
END
ELSE
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
UPDATE B SET CL = Inserted.CL FROM Inserted WHERE B.PGH=Inserted.PGH
END
GO
uj5u.com熱心網友回復:
用存盤程序更適合做業務邏輯的校驗和執行。建議使用存盤程序執行。create proc ttt @ph varchar(40),@newcl int as
declare @oldphcl int ,@acl int
select @oldphcl=sum(cl) from B where ph=@ph
select @acl=sum(cl) from a where ph=@ph
set @oldphcl=@oldphcl+@newcl
if @oldphcl>@acl
raiserorrer('數量超了',16,8)
else
insert into b select @newcl,@ph
uj5u.com熱心網友回復:
學習
uj5u.com熱心網友回復:
少用觸發器,避免日后維護困難這個可用一段SQL 來檢查
當預計產量小于訂單量時才生產
uj5u.com熱心網友回復:
程式已經不能修改了,只是希望在資料存盤的程序中做一個判斷,請問這個能實作嗎
uj5u.com熱心網友回復:
程式已經不能修改了,只是希望在資料存盤的程序中做一個判斷,請問這個能實作嗎
uj5u.com熱心網友回復:
當然可以
uj5u.com熱心網友回復:
只要能獲取到輸入值就可以用存盤程序。uj5u.com熱心網友回復:
如果是判斷條件的校驗關聯其他表的話,只能用存盤程序,如果校驗條件在一個表內的不同欄位的判斷條件,用約束也可以。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82346.html
標籤:疑難問題
