insert语句(insert a, insert a1/a2) 
---------
这种方式就可以了啊,
直观.

解决方案 »

  1.   

    保持一致用事务set xact_abort on
    begin tran
        insert into  A..
        insert into  A1..
        insert into  A2..
    commit tran
      

  2.   

    事务中
    set xact_abort on
    begin tran
       insert into A   ---> 这个时候如何获取这个表的ID,再用这个ID作为insert A1的参数 ???
       insert into A1(A_ID, ....)
    commit tran
      

  3.   

    1.一种方式,外面传递ID参数进来,
    @ID int ,
    2,另一种方式,如果是事务内部产生的话,使用变量传递
    declare @ID int
    set @ID = ..
      

  4.   

    PERSON_ID 一般设为自增列,插入A表后紧接着用@@IDENTITY获取A表中刚插入的PERSON_ID 的值,用于插入A1、A2表
    开始不熟悉事务可以不用事务,一般不会出问题
      

  5.   

    在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
      

  6.   

    按照如下顺序
    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(教龄))