SQL同一表中的触发器怎么写?
发布网友
发布时间:2022-04-27 12:28
我来回答
共4个回答
热心网友
时间:2023-09-19 12:16
--不需要定义什么变量之类的吧,直接关联inserted做更新就可以,又没有什么其他的流程
create trigger tablea_Upd
on 表A
after update
as
begin
update 表A set 表A.结束码 =(case when inserted.订单数量<=inserted.未交数量 then '结束' else '未结束' end) from inserted where 表A.订单编号=inserted.订单编号 and 表A.品号=inserted.品号
and
end
热心网友
时间:2023-09-19 12:16
因为这里会变化的是 表A中的未交数量 ,所以建立更新触发器就可以了。
示例如下:
create trigger 表A_upd_tri
on 表A
after update
as
begin
declare @i_amount int
declare @i_billamount int
declare @id int --假设关键字是int类型 名称叫 ID
if update(未交数量)
begin
select @i_amount = 未交数量,@i_billamount = 订单数量,@id = id from inserted
if @i_amount >= @i_billamount
update 表A set 结束码 = '结束' where id = @id
-- 不用写else 因为表写数据进来的时候,结束码应该是'未结束'
end
end
热心网友
时间:2023-09-19 12:17
create TRIGGER 触发器名
ON 表
FOR insert,update
AS
begin
declare @a int
---定义需要判断的字段未交数量,先假设类型是int
set @a = 0
select @a = 未交数量 from inserted
select @a = 未交数量 from updated
if exists (select 1 from 表 where @a >= 订单数量 and 判断条件)
---判断值是否有了或者相同,或者你改成需要的判断语句
update 表 set 结束码 = '结束' where 条件
else
update 表 set 结束码 = '未结束' where 条件
end
热心网友
时间:2023-09-19 12:17
兄弟最好是将订单的表结构,以及销货单的表结构搞出来;这样写起来简单了;我们用的是易助;做了这样的触发;当然也可以用SQL作业代理;(触发器比较及时,反应快,但不能自动更新)像我们的ERP在订单的界面就有已交 量(这个是程序自动回写)