关于同时插入数据 有两张表A和B,A的主键在B表中是一个外键,请问如何在向A表添加数据的时候,同时B表中也可以自动添加数据,比如向A表中插入id(A表主键)为1的一条数据,B表中同时添加外键为1的一条数据!请问高手们怎么实现呢???因为我是在后台的java代码中实现的,涉及到两条sql语句,请问在A表主键自动生成的时候向B表添加数据怎么获得A表的主键值!!!!谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 貌似触发器可实现.create trigger my_trig on A for insertasbegin insert into b (需要的字段) select 需要的字段或数据值 from inserted end /*创建两表,建立一个视图基于这两张表。创建触发器实现向视图插入数据时等于分别向两表插入数据*/--创建表tbl_dept:create table tbl_dept(deptid varchar(4) primary key,deptname varchar(10) not null)--创建表tbl_emp:create table tbl_emp(empid varchar(10) primary key,empname varchar(20) not null,deptid varchar(4) foreign keyreferences tbl_dept(deptid) not null)--创建视图用于存储表tbl_dept和tbl_emp表中的数据:create view v_empinfo as select tbl_emp.empid,tbl_emp.empname,tbl_emp.deptid,tbl_dept.deptname from tbl_emp,tbl_deptwhere tbl_emp.deptid=tbl_dept.deptidselect *from v_empinfo--创建触发器实现上述功能:create trigger tr_insert on v_empinfoinstead of insertasdeclare @eid varchar(10),@ename varchar(20), @did varchar(4),@dname varchar(10)select @eid=empid,@ename=empname, @did=deptid,@dname=deptnamefrom insertedinsert into tbl_dept values(@did,@dname)insert into tbl_emp values(@eid,@ename,@did)--验证是否成功向两表中插入数据:insert into v_empinfo values('200911076','tracy', '1001','sales')select *from tbl_empselect *from tbl_dept--创建触发器实现删除主表中的数据时自动删除附表中的数据:--创建表tbl_stu:create table tbl_stu(stuid varchar(15) primary key,stuname varchar(20) not null)--插入数据:insert into tbl_stu values('200911076','李白和')insert into tbl_stu values('200911077','王洪洋')--创建表tbl_score:create table tbl_score(stuid varchar(15) foreign key references tbl_stu(stuid)not null,Math int default(0))--插入数据:insert into tbl_score values('200911076',85)insert into tbl_score values('200911077',95)--创建视图v_view:create view v_view asselect s.stuid,s.stuname,sc.mathfrom tbl_stu s,tbl_score scwheres.stuid=sc.stuid--为视图创建触发器tr_delete:create trigger tr_delete on v_viewinstead of deleteasdeclare @stuid varchar(15),@stuname varchar(20), @math intselect @stuid=stuid,@stuname=stuname,@math=math from deleteddelete tbl_score where stuid=@stuiddelete tbl_stu where stuid=@stuid--验证是否删除两表中对应的所有信息delete v_view where stuid='200911077'select *from tbl_stuselect *from tbl_score曾经学习时的例子,上机练习 ADOX 查找SQL200 里的USERS的问题。。。找不到。 SQL语句 求一SQL语句? 存储过程中如何获取某表中TOP 1的数据 sql server2008从excel向数据库导入数据报错 菜鸟求救!哪里有sql server2000的入门教程! 关于sysobjects访问权限问题。 MS-SQL数据库 更改列名的问题 关于SQLSERVER中的表加锁的问题。 如何知道数据库中符合条件的行有多少条 SQL 查询添加列显示数据 int 指定列宽。
create trigger my_trig on A for insert
as
begin
insert into b (需要的字段) select 需要的字段或数据值 from inserted
end
/*
创建两表,建立一个视图基于这两张表。
创建触发器实现向视图插入数据时等于
分别向两表插入数据
*/--创建表tbl_dept:
create table tbl_dept(
deptid varchar(4) primary key,
deptname varchar(10) not null
)--创建表tbl_emp:
create table tbl_emp(
empid varchar(10) primary key,
empname varchar(20) not null,
deptid varchar(4) foreign key
references tbl_dept(deptid)
not null
)--创建视图用于存储表tbl_dept和tbl_emp表中的数据:
create view v_empinfo
as
select
tbl_emp.empid,tbl_emp.empname,tbl_emp.deptid,
tbl_dept.deptname
from
tbl_emp,tbl_dept
where
tbl_emp.deptid=tbl_dept.deptid
select *from v_empinfo--创建触发器实现上述功能:
create trigger tr_insert on v_empinfo
instead of insert
as
declare @eid varchar(10),@ename varchar(20),
@did varchar(4),@dname varchar(10)
select @eid=empid,@ename=empname,
@did=deptid,@dname=deptname
from
inserted
insert into tbl_dept values(@did,@dname)
insert into tbl_emp values(@eid,@ename,@did)--验证是否成功向两表中插入数据:
insert into v_empinfo values('200911076','tracy',
'1001','sales')
select *from tbl_emp
select *from tbl_dept--创建触发器实现删除主表中的数据时自动删除附表中的数据:--创建表tbl_stu:
create table tbl_stu(
stuid varchar(15) primary key,
stuname varchar(20) not null
)--插入数据:
insert into tbl_stu values('200911076','李白和')
insert into tbl_stu values('200911077','王洪洋')--创建表tbl_score:
create table tbl_score(
stuid varchar(15)
foreign key
references tbl_stu(stuid)
not null,
Math int default(0)
)--插入数据:
insert into tbl_score values('200911076',85)
insert into tbl_score values('200911077',95)--创建视图v_view:
create view v_view
as
select
s.stuid,s.stuname,sc.math
from
tbl_stu s,tbl_score sc
where
s.stuid=sc.stuid--为视图创建触发器tr_delete:
create trigger tr_delete on v_view
instead of delete
as
declare @stuid varchar(15),@stuname varchar(20),
@math int
select @stuid=stuid,@stuname=stuname,@math=math
from deleted
delete tbl_score where stuid=@stuid
delete tbl_stu where stuid=@stuid--验证是否删除两表中对应的所有信息
delete v_view where stuid='200911077'
select *from tbl_stu
select *from tbl_score
曾经学习时的例子,上机练习