sql如何同时向两张表插入数据

Posted

tags:

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

举个例子:create table a( id int identity primary key,name varchar(100))gocreate table b( smallname varchar(100),aid int references a(id) )C#代码中同事插入name和smallname,如何一次性插入进去,高手详解一下谢谢

每一个T-SQL指令都是一个独立的批处理。而有些语法下的批处理语法是必须要进行批处理分割(关键字go)的。比如这个create table

如果想让两条sql语句同时执行是不可能做到的。但是可以使用“事务”让两条sql语句执行并保证状态一致。但是刚才说过,有些指令语法是必须要求进行批处理分割的,比如创建存储过程。

你可以根据你自己的实际情况区分这些情况。
参考技术A 给你写个触发器:

create trigger Mytr
on a
for insert
as
insert into b select name,id from inserted

触发器给建立后,当插入a表数据后,触发器自动触发执行
将触发器临时保存的新数据表:inserted表的内容插入到b表里本回答被提问者和网友采纳
参考技术B 在A表中写个触发器,当往A 表中插入数据时,同时向B表中插入数据! 参考技术C 写两个SQL insert语句一次执行。

Oracle

                                        第8章 函数和过程
8.4、过程(2019-06-15)
1、存储过程向两张表中添加数据
-- 第一张表是avator表 CREATE TABLE avatar( avatar_id NUMBER GENERATED AS IDENTITY CONSTRAINT avatar_kp PRIMARY KEY,--主键约束 avatar_name VARCHAR2(30) ); -- 第二张表是episode表 CREATE TABLE episode( episode_id NUMBER GENERATED AS IDENTITY CONSTRAINT episode_pk PRIMARY KEY, avatar_id NUMBER CONSTRAINT episode_nnl NOT NULL,--NOT NULL约束 episode_name VARCHAR2(30), CONSTRAINT episode_fkl FOREIGN KEY(avatar_id) REFERENCES avatar(avatar_id)--外键约束 ); --adding_contact过程显示了如何使用按值传递过程跨单个事务作用域管理多个DML语句: CREATE OR REPLACE PROCEDURE adding_avatar(pv_avatar_name VARCHAR2,pv_episode_name VARCHAR2) IS lv_avatar_id NUMBER; BEGIN SAVEPOINT all_or_none;--事务开始点 INSERT INTO avatar(avatar_name)VALUES(pv_avatar_name)RETURNING avatar_id INTO lv_avatar_id;--RETURNING INTO子句将标识列的值返回给局部变量 INSERT INTO episode(avatar_id,episode_name)VALUES(lv_avatar_id,pv_episode_name);--使用lv_avatar_id局部变量作为外键值 COMMIT;--提交 EXCEPTION--异常 WHEN OTHERS THEN ROLLBACK TO all_or_none;--回滚可能已经发生的事务 END; / --匿名块程序测试过程 BEGIN adding_avatar(‘Airbender‘,‘Episode 1‘); END; /

  

以上是关于sql如何同时向两张表插入数据的主要内容,如果未能解决你的问题,请参考以下文章

sql如何同时向两张表插入数据

两张表关联如何实现同时插入数据 sql具体语句

想写个SQL触发器,同时插入两张,当一个表不符合条件时两张表都不让插入

sql插入数据问题

mybatis主键返回的实现

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