注册 登录
编程论坛 SQL Server论坛

主表与子表之间的触发器

davyxjc 发布于 2011-06-23 14:05, 881 次点击
主表                       子表
主表标识   税率            子表标识     主表标识   税率
1          17               1            1          17
                            2            1          3
现在要写一个触发器,当子表中某条记录的税率与主表的税率不相同时,这张表单就不能保存。
如上面,主表税率是17,而子表第一条记录税率是17,第二条记录税率是3,则此表单就不能保存。
请问这样的触发器怎样写呀?

现在我想要解决的是,两个表中新增加记录,税率不同时,不能保存。

[ 本帖最后由 davyxjc 于 2011-6-23 16:27 编辑 ]
7 回复
#2
zhanghaih2011-07-09 14:53
不太清楚!不过学习了
#3
png2011-07-12 02:51
create trigger Trigger_Name on Sub_Table
for insert, update
as
if exists ( select *
              from inserted i join Main_Table m on i.Mid = m.Mid
              where i.TaxRate <> m.TaxRate)
rollback                           
go
#4
SEODJ2011-07-12 15:10
好像是这样的
#5
pxr1002011-07-24 08:53
应该是这样 初学者啊


#6
cnfarer2011-07-29 10:54
其实子表根本不需要保存税率!!
#7
png2011-07-29 21:54
回复 6楼 cnfarer
"其实子表根本不需要保存税率!! "

+1
#8
panxingren2011-08-26 17:00
如果一定要用触发器也可以。
3楼 思路对 ,但 漏了一个关键字 “INNER”
简单修改后:
create trigger Trigger_Name on Sub_Table
for insert, update
as
if exists ( select * from inserted i
            inner join Main_Table m on i.Mid = m.Mid
              where i.TaxRate <> m.TaxRate)

begin
raiserror('税率不相同',18,18)
rollback tran
end
go
1