a,b两个表,我要求A表增加记录B表也增加,A表删除记录B表也删除同样记录,如何用触发器实现?
---------------------------------------------------
A表字段:
客户编码,客户名称B表字段:
客户编码二,客户名称二我想通过触发器实现,只操作A表,就同样操作B表,让B表与A表的记录内容完全一样(两个就是字段名不一样,但结构都相同)增加功能的触发器好实现:
CREATE TRIGGER [insert_kehu] ON [dbo].[客户编码表]
FOR INSERT
AS
insert into 客户编码表二
(客户编码二,客户名称二)
select 客户编码,客户名称
from inserted但是删除功能的触发器,我不会写
---------------------------------------------------
A表字段:
客户编码,客户名称B表字段:
客户编码二,客户名称二我想通过触发器实现,只操作A表,就同样操作B表,让B表与A表的记录内容完全一样(两个就是字段名不一样,但结构都相同)增加功能的触发器好实现:
CREATE TRIGGER [insert_kehu] ON [dbo].[客户编码表]
FOR INSERT
AS
insert into 客户编码表二
(客户编码二,客户名称二)
select 客户编码,客户名称
from inserted但是删除功能的触发器,我不会写
on a表
for delete
as
begin
delete 表b where 客户编码2 in(select 客户编码 from deleted)
end
CREATE TRIGGER [insert_kehu] ON [dbo].[客户编码表]
FOR INSERT
AS
insert into 客户编码表二
(客户编码二,客户名称二)
select 客户编码,客户名称
from inserted goCREATE TRIGGER [delete_kehu] ON [dbo].[客户编码表]
FOR delete
AS
delete 客户编码表二
from 客户编码表二,deleted d
where 客户编码二=d.客户编码goCREATE TRIGGER [update_kehu] ON [dbo].[客户编码表]
FOR update
AS update 客户编码表二 set
客户名称二 = i.客户名称二
from 客户编码表二,inserted i
where 客户编码二=i.客户编码go
FOR update
AS update 客户编码表二 set
客户名称二 = i.客户名称
from 客户编码表二,inserted i
where 客户编码二=i.客户编码
--与CREATE TRIGGER [update_kehu] ON [dbo].[客户编码表]
FOR update
AS update 客户编码表二 set
客户名称二 = i.客户名称
from 客户编码表二 a inner join inserted i
on a.客户编码二=i.客户编码
GO
CREATE TABLE A002(F_ID INT REFERENCES A001(F_ID) ON DELETE CASCADE,F_NAME VARCHAR(20))
GOCREATE TRIGGER TR_A001
ON A001
FOR INSERT
AS
BEGIN
INSERT INTO A002 (F_ID,F_NAME) SELECT F_ID,F_NAME FROM INSERTED
END测试一下哦:
INSERT INTO A001 (F_ID,F_NAME) SELECT 1,'AA'
SELECT * FROM A001
SELECT * FROM A002DELETE FROM A001
SELECT * FROM A001
SELECT * FROM A002
FOR DELETE
AS
DELETE FROM 客户编码表二
WHERE 客户编码二=(select 客户编码 from DELETED)GO
WHERE 客户编码二=(select 客户编码 from DELETED)
deleted表有可能不是一条记录呀,如果是多条记录的话,语法不就报错了吗?
请教一下.
WHERE 客户编码二=(select 客户编码 from DELETED)
deleted表有可能不是一条记录呀,如果是多条记录的话,语法不就报错了吗?
请教一下.
-----------------------
这样写是不行的,不信就试试,删除两条记录时会报错