日期:2014-05-18  浏览次数:20459 次

sql server的触发器怎么写?急~~~!!在线等
假设有这样2个表,
表一:YGZW_YYCL
表一字段:id,carID,carColor

表二:YGZW_YYCL_ZL
表一字段:id,carID,carColor,incTime,incType

表二比表一多了incTime,incType这2个字段而已,
我现在要写一个触发器:当表一发生增删改的时候,分别实现以下的情况:

增:表一增加了一条记录,把这条增加的记录同时新增一条到表二,但是表二的incTime为写进表二的那一刻的时间,incType为0

该:表一修改了某一条记录,同时把修改以后的记录新增一条到表二,表二的incTime为写进表二的那一刻的时间,incType为1

删:表一删除了一条记录,则把被删除的记录同时写进表二,表二的incTime为写进表二的那一刻的时间,incType为2


用一个触发器来实现,怎么写?谁帮我写下,马上要用,分不多了,麻烦高手了!

------解决方案--------------------
这不是一个触发器,是3个
insert 触发器
update 触发器
delete 触发器

我就不写了,帮顶下,后面的继续
------解决方案--------------------
try
SQL code
create trigger tri_YGZW_YYCL 
on YGZW_YYCL
for insert,update,delete
as
if not exists(select 1 from deleted) --insert
begin
  insert into YGZW_YYCL_ZL
  select *,getdate(),0 from inserted
end
if not exists(select 1 from inserted) -- delete
begin
  insert into YGZW_YYCL_ZL
  select *,getdate(),2 from deleted
end
else --update
begin
  insert into YGZW_YYCL_ZL
  select *,getdate(),1 from inserted
end
go

------解决方案--------------------
SQL code
create trigger tr_name on YGZW_YYCL
for insert,update,delete
as
if update(id) or update(carID) or update(carColor)
   insert into YGZW_YYCL_ZL
          select *,getdate(),1 from inserted
else
begin
  if exists(select 1 from inserted)
     insert into YGZW_YYCL_ZL
          select *,getdate(),0 from inserted 
  else
     insert into YGZW_YYCL_ZL
          select *,getdate(),2 from deleted
end

------解决方案--------------------
if else 嵌套