在SQL中采用面向对象的继承好像不太好使。 不过对于你的例子还是比较简单的,下面给了代码示例,看看是否有用。 set nocount on --建表 create table p(id int,age int) create table s(id int,DEGREE int) go --建视图 create view v_s as select a.id,a.age,b.degree from p a,s b where a.id = b.id go --建触发器 create trigger t_vs on v_s instead of insert,update,delete as begin delete s where id in (select id from deleted) delete p where id in (select id from deleted) insert p select id,age from inserted insert s select id,degree from inserted end go --测试 insert v_s select 1,18,3 select * from p select * from s select * from v_s go /*结果 id age ----------- ----------- 1 18 id DEGREE ----------- ----------- 1 3 id age degree ----------- ----------- ----------- 1 18 3 清除 */ drop view v_s go drop table p,s
begin tran
insert into A..
insert into A1..
insert into A2..
commit tran
set xact_abort on
begin tran
insert into A ---> 这个时候如何获取这个表的ID,再用这个ID作为insert A1的参数 ???
insert into A1(A_ID, ....)
commit tran
@ID int ,
2,另一种方式,如果是事务内部产生的话,使用变量传递
declare @ID int
set @ID = ..
开始不熟悉事务可以不用事务,一般不会出问题
不过对于你的例子还是比较简单的,下面给了代码示例,看看是否有用。
set nocount on
--建表
create table p(id int,age int)
create table s(id int,DEGREE int)
go
--建视图
create view v_s
as
select a.id,a.age,b.degree from p a,s b where a.id = b.id
go
--建触发器
create trigger t_vs on v_s
instead of insert,update,delete
as
begin
delete s where id in (select id from deleted)
delete p where id in (select id from deleted)
insert p select id,age from inserted
insert s select id,degree from inserted
end
go
--测试
insert v_s select 1,18,3
select * from p
select * from s
select * from v_s
go
/*结果
id age
----------- -----------
1 18 id DEGREE
----------- -----------
1 3 id age degree
----------- ----------- -----------
1 18 3
清除 */
drop view v_s
go
drop table p,s
1\insert PERSON(PERSON_ID, NAME, AGE)
2\insert PERSON_STUDENT(PERSON_ID, STUDENT_DEGREE(学历), STDUENT_UNIVERSITY(学校))
3\insert PERSON_TEACHER(PERSON_ID, TEACHER_LEVEL(级别), TEACHER_YEARS(教龄))