怎么把数据同时插入到数据库的两个表中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把数据同时插入到数据库的两个表中相关的知识,希望对你有一定的参考价值。

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

通过触发器也能实现你的需求,其底层原理依然是事务,触发器和引发它执行的语句被自动地包装到一个事务中。不过,强烈不建议使用该方法,用此伎俩会导致业务逻辑分散,而人的思维还是需要一定的连贯性,集中在一起显然有助于表达和理解,当需要改进或者调试错误时徒增繁琐,实在是弊大于利。
参考技术A 写个触发器 例如
create trigger insertsid
on one
for insert
as
begin
declare @a as int(可以声明多个参数)
select @a=(select sid from inserted )(给参数赋值)
insert into two (sid1) values (@a)
end
这样你给one表插入数据时 ,two表会自动插入数据
参考技术B 一种是老老实实的写两个插入语句。分别插入到两张表。
另一种方法可以写一个触发器,写在其中一张表上,增加时触发,这样这张表插入数据时触发器执行,在触发器里面写插入另一张表的语法。
参考技术C sql server 和mysql可以这样:

use 库1;
go
insert A表(要插入的字段列表)
select 要插入的字段列表
from 库2.B表 ;

--注意字段的对应....

oracle 可以使用 exp导出 然后imp导入

插入数据库表中一条记录同时也插入另一个表中的SQL语句怎么写

在插入数据库一个表(如,A表)中字段(如,a字段)的值的同时也插如另一个表(如,B表)中字段(如,b字段)的值,请问怎么写SQL语句

如果需要一起写入就在程序中直接分别写插入A和插入B表的数据,如果想让数据库自动在插入A表时触发执行插入B表数据,那就要在数据库中定义“触发器”来实现了。追问

那两个表的 字段不同呢!1

参考技术A 可以同时触发写入两张报表内,也可以设定UPDATE自动到另一张表内 参考技术B 用触发器写 参考技术C 有点没明白什么意思,是在往a表添加一条数据的同时往b表添加一条同样的数据?追问

就是向A表插入数据的时候 也把数据插入到B表中 字段名 有的不同!

追答

那就用触发器呗,字段名不同只要类型一样就ok呀!用触发器往哪个字段添加什么样的数据那是你控制的呀!
create trigger [dbo].[tri_1]
on [dbo].[tabA] --将要进行更改的表名
for insert --给表插入一条数据的时候触发
as
declare @biaoming nvarchar(250) --定义一个变量
select @biaoming = biaoming from inserted --把查询出的指定字段的值赋值给变量
INSERT INTO tabB (biaoming )VALUES @biaoming --插入语句

这个要在tabA的触发器里写

追问

create or replace trigger tri_ab
before insert on a
for each row
is
begin
when ... then
insert into b values(:new.id,:new.name,:new.money,:new.pid);
end tri_ab;
这样 怎么 让 A表中的 字段 和 B表中的字段 对应啊!

追答

你先看我给你写的,不明白再问我吧

本回答被提问者采纳

以上是关于怎么把数据同时插入到数据库的两个表中的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句怎么同时往两个表中插入不同的记录

插入数据库表中一条记录同时也插入另一个表中的SQL语句怎么写

怎么把两张表的数据插入到一张表中

如何将记录同时插入到两个数据库表中?

如何在 SQL 服务器中将数据插入到两个不同的表中,同时在 SQL 中具有 ORDER# 主键

如何把查询一个数据库表中的查询结果插入到另一个数据库表中(高分!)