用触发器实现主从表关系(主表更改从表更改 )

 
用触发器实现的  插入 更新  删除  子表也变化
                             
None.gif CREATE   TABLE   [ dbo ] . [ tablex ]  (
None.gif    
[ idx ]   [ int ]   IDENTITY  ( 1 1 NOT   NULL  ,
None.gif    
[ ProductID ]   [ int ]   NULL  ,
None.gif    
[ productName ]   [ char ]  ( 10 ) COLLATE Chinese_PRC_CI_AS  NULL  
None.gif
ON   [ PRIMARY ]
None.gif
GO
None.gif
None.gif
CREATE   TABLE   [ dbo ] . [ tabley ]  (
None.gif    
[ idy ]   [ int ]   IDENTITY  ( 1 1 NOT   NULL  ,
None.gif    
[ ProductID ]   [ int ]   NULL  ,
None.gif    
[ productname ]   [ char ]  ( 10 ) COLLATE Chinese_PRC_CI_AS  NULL  
None.gif
ON   [ PRIMARY ]
None.gif
GO
None.gif
None.gif
None.gif
None.gif
None.gif
CREATE   TRIGGER   triDelete  ON   [ dbo ] . [ tablex ]  
None.gif
FOR     delete
None.gif
AS
None.gif
None.gif
begin
None.gif
declare   @aa   varchar ( 200 )
None.gif
set   @aa = ( select   productid    from  deleted)
None.gif
if   @@rowcount > 0
None.gif
delete   tabley     where  productid = @aa
None.gif
end
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
CREATE   trigger  tritmp  on  tablex  for   insert
None.gif
as
None.gif
insert   into  tabley(ProductID)  select  i.ProductId  from  inserted  as  i    where   i.ProductId > 100
None.gif
None.gif
None.gif
None.gif
CREATE   TRIGGER   triUpdate   ON   [ dbo ] . [ tablex ]  
None.gif
FOR     UPDATE
None.gif
AS
None.gif
IF   UPDATE (productname)
None.gif
begin
None.gif
declare   @aa   varchar ( 200 )
None.gif
set   @aa = ( select   productid   from  INSERTED)
None.gif
declare   @bb   varchar ( 200 )
None.gif
set   @bb = ( select   productname   from  INSERTED)
None.gif
if  ( @@rowcount > 0 )
None.gif
update   tabley   set  productname = @bb   where  productid = @aa
None.gif
end
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
insert  tablex  values ( 300 , ' 东方 ' )
None.gif
None.gif
update  tablex  set  productname = ' 大海 '   where  productid = 300
None.gif
select   *   from  tablex
None.gif
None.gif
select   *   from  tabley
None.gif
None.gif
delete   from  tablex  where  productid = 300
None.gif
select   *   from  tablex
None.gif
None.gif
select   *   from  tabley


其实删除时也可以用外键
删除

None.gif CREATE   TABLE   [ dbo ] . [ TABLE1 ]  (
None.gif    
[ UserId ]   [ int ]   IDENTITY  ( 1 1 NOT   NULL  ,
None.gif    
[ name ]   [ char ]  ( 10 ) COLLATE Chinese_PRC_CI_AS  NULL  
None.gif
ON   [ PRIMARY ]
None.gif
None.gif
None.gif
CREATE   TABLE   [ dbo ] . [ TABLE2 ]  (
None.gif    
[ id ]   [ int ]   IDENTITY  ( 1 1 NOT   NULL  ,
None.gif    
[ Userid ]   [ int ]   NULL  ,
None.gif    
[ name ]   [ char ]  ( 10 ) COLLATE Chinese_PRC_CI_AS  NULL  
None.gif
ON   [ PRIMARY ]
None.gif
GO
None.gif
None.gif
None.gif
None.gif
None.gif
ALTER   TABLE   [ dbo ] . [ TABLE2 ]   ADD  
None.gif    
CONSTRAINT   [ FK_TABLE2_TABLE1 ]   FOREIGN   KEY  
None.gif    (
None.gif        
[ Userid ]
None.gif    ) 
REFERENCES   [ dbo ] . [ TABLE1 ]  (
None.gif        
[ UserId ]
None.gif    ) 
ON   DELETE   CASCADE  
None.gif
GO
None.gif
None.gif
select   *   from  table1
None.gif
None.gif
select   *   from  table2
None.gif
None.gif
insert  table1  values ( ' def ' )
None.gif
insert  table2  values  ( 5 , ' def ' )
None.gif 
select   *   from  table1
None.gif
None.gif
select   *   from  table2
None.gif
None.gif
delete   from  table1  where  userid = 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值