我想问一下是否可以在两个或多个表中插入一行数据:
示例查询:
插入tblsample,tblsample2('tblsample.id','tblsample2.id'')值('1','1')
我相信语法是错误的,但我想展示的是可以完成的过程。
我正在考虑将此问题转换为事务查询,就好像这个想法不起作用。
答案 0 :(得分:0)
Oracle似乎支持这样的多表插入:
insert all
into sample_table (id, name) values (1, 'foo')
into sample_table2 (id, name) values (2, 'bar')
select * from dual;
但我认为没有供应商独立的方式。
答案 1 :(得分:0)
在标准SQL中无法实现。 Oracle,Microsoft SQL Server以及可能的其他DBMS允许多表插入具有某些限制。
一次只能修改一个表的限制是SQL的基本限制。它实际上不可能强制执行某些多表完整性约束。这可能就是为什么SQL DBMS通常只支持一组非常有限的约束(FOREIGN KEYs和一些CHECK约束)。
答案 2 :(得分:0)
MS SQL和Oracle可以支持多个插入,但是您应该包装在一个事务中,因为如果发生错误的一半,它将不会回滚整个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语法可能有问题,自从我这样做以来已经有一段时间了
这也适用于许多其他数据库,但它们的语法可能不同。关于这种方法的好处是它已经是事务性的,所以你不必将它包装在事务中。