Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中同时向两个表插入数据_Sql - Fatal编程技术网

如何在sql中同时向两个表插入数据

如何在sql中同时向两个表插入数据,sql,Sql,我有两张表,车辆和车辆类型。我想使用一个表单将相同的数据添加到两个表中。我该怎么做 您可以使用参数创建存储过程 在名为2 insert into语句的存储过程中,使用参数作为值 使用存储过程,您可以拥有事务控制—如果出现任何错误,则回滚两个表的插入 create procedure insert_into_2_tables @column1 varchar(50), @column2 int, ... as begin tran insert into table1 values (@co

我有两张表,车辆和车辆类型。我想使用一个表单将相同的数据添加到两个表中。我该怎么做

您可以使用参数创建存储过程

在名为2 insert into语句的存储过程中,使用参数作为值

使用存储过程,您可以拥有事务控制—如果出现任何错误,则回滚两个表的插入

create procedure insert_into_2_tables
@column1 varchar(50),
@column2 int,
...

as

begin tran

insert into table1 values (@column1, @column2, ...)

insert into table2 values (@column1, @column2, ...)

if @@error <> 0
  rollback tran
else commit tran
create procedure insert_到_2_表中
@第1列varchar(50),
@第2列int,
...
作为
开始事务
在表1中插入值(@column1,@column2,…)
在表2中插入值(@column1,@column2,…)
如果@错误0
回滚传输
else提交传输

--您可以从表单、代码等调用此存储过程。

编写两个单独的insert语句,将数据插入车辆表和车辆类型表。

您没有指定DBMS,但在Postgres中,您可以使用一个SQL语句执行此操作:

with new_type as (
   insert into vehicle_type values (1, 'big')
   returning id
)
insert into vehicle
values
(1, (select id from new_type), 'super model');

SQLFIDLE示例:

如果必须在两个不同的表中插入相同的数据,那么您的数据库模型肯定是错误的…;)您不能连续执行两次
插入到查询?SQL中没有表单这样的东西。因此,请扩展标记以指示在中开发的内容。您可以在事务中执行两个插入,但标准SQL的
INSERT
语句(以及
DELETE
UPDATE
等)只能影响一个表。因此,您需要两条语句,或者使用特定于产品的语言扩展(如果存在),如果您希望每次在一个表中插入一条记录时都发生这种情况,那么就使用触发器。这将是直截了当的。您使用的是哪种数据库管理系统?神谕博士后?你为什么要这么做?您是否试图访问
车辆类型表的生成ID?如果是,那么还有更好的方法。