如何向一个数据库中两张表插入数据?

如何向一个数据库中两张表插入数据?,第1张

可以啊,建议你用触发器。比如在Table1中:\x0d\x0aCreateTriggerAutoInsert\x0d\x0aForInsert\x0d\x0aAs\x0d\x0ainsertintoTable2values(1,2)\x0d\x0a然后你只要执行:\x0d\x0ainsertintoTable1values(1,2)\x0d\x0a那么自动启用触发机制,自然Table2中也有了。

严格意义上讲,没有所谓“同时插入”的手段,只有“要么都插入(分先后),要么都不插入”的机制,这个机制就叫做“事务”,是数据库服务器的执行单位,是原子 *** 作。

由上,将两个insert命令包装为一个事务,如下:

declare @OK integer

begin transaction

set @OK = 0

while 1 = 1

begin

insert table1 values( ... )

set @OK = @@error

if @OK <>0

Break

insert table2 values (... )

set @OK = @@error

Break

end

if @OK = 0

commit transaction

else

rollback transaction

通过触发器也能实现你的需求,其底层原理依然是事务,触发器和引发它执行的语句被自动地包装到一个事务中。不过,强烈不建议使用该方法,用此伎俩会导致业务逻辑分散,而人的思维还是需要一定的连贯性,集中在一起显然有助于表达和理解,当需要改进或者调试错误时徒增繁琐,实在是弊大于利。

如果两表字段相同,则可以直接这样用。

insert into table_a select * from table_b

如果两表字段不同,a表需要b中的某几个字段即可,则可以如下使用:

insert into table_a(field_a1,field_a2,field_a3) select field_b1,field_b2,field_b3 from table_b

还可以加上where条件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11938096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存