我想问一下,是否可以将一行数据插入到两个或多个表中:
示例查询:
插入tblsample,tblsample2 ('tblsample.id',‘tblsample2.id’)值('1','1')
我认为语法是错误的,但我想要展示的是本可以完成的过程。
我正在考虑在事务查询中这样做,就像如果这个想法不起作用一样。
发布于 2013-10-15 11:49:49
Oracle似乎支持这样的多表插入:
insert all
into sample_table (id, name) values (1, 'foo')
into sample_table2 (id, name) values (2, 'bar')
select * from dual;但我认为没有独立于供应商的方式。
发布于 2013-10-15 14:15:10
这在标准SQL中是不可能的。Oracle、Microsoft SQL Server和可能还有其他DBMS允许具有特定限制的多表插入。
一次只能修改一个表的限制是SQL的一个基本限制。这使得强制执行一些多表完整性约束实际上是不可能的。这可能就是为什么SQL DBMS通常只支持一组非常有限的约束(外键和一些检查约束)的原因。
发布于 2013-10-15 22:31:21
MS SQL和Oracle可以支持多个inserts,但您应该包装在一个事务中,因为如果中途发生错误,它将不会回滚整个SQL语句。要执行此操作,请在插入内容之间添加";“:
INSERT INTO table1 (1,2,3,'Test');INSERT INTO table1 (3,4,5,'Test');INSERT INTO table1 (6,7,8,'Test')但是,使用MS Access可以做一个小技巧是创建一个数据表,以便通过UNIONing将一些数据插入到一起:
INSERT INTO table1 (SELECT 1,2,3,'TEST' UNION ALL SELECT 1,2,3,'TEST' UNION ALL SELECT 1,2,3,'TEST')我可能有MS Access语法错误,我已经有一段时间没有使用access了
这也适用于许多其他数据库,但它们的语法可能有所不同。这种方法的好处是它已经是事务性的,所以您不必将其包装在事务中。
https://stackoverflow.com/questions/19372898
复制相似问题