首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用完整性(将数据插入两个或多个表)

问引用完整性(将数据插入两个或多个表)
EN

Stack Overflow用户
提问于 2013-10-15 11:39:12
回答 3查看 1.2K关注 0票数 2

我想问一下,是否可以将一行数据插入到两个或多个表中:

示例查询:

插入tblsample,tblsample2 ('tblsample.id',‘tblsample2.id’)值('1','1')

我认为语法是错误的,但我想要展示的是本可以完成的过程。

我正在考虑在事务查询中这样做,就像如果这个想法不起作用一样。

EN

回答 3

Stack Overflow用户

发布于 2013-10-15 11:49:49

Oracle似乎支持这样的多表插入:

代码语言:javascript
复制
insert all
into sample_table (id, name) values (1, 'foo')
into sample_table2 (id, name) values (2, 'bar')
select * from dual;

但我认为没有独立于供应商的方式。

票数 0
EN

Stack Overflow用户

发布于 2013-10-15 14:15:10

这在标准SQL中是不可能的。Oracle、Microsoft SQL Server和可能还有其他DBMS允许具有特定限制的多表插入。

一次只能修改一个表的限制是SQL的一个基本限制。这使得强制执行一些多表完整性约束实际上是不可能的。这可能就是为什么SQL DBMS通常只支持一组非常有限的约束(外键和一些检查约束)的原因。

票数 0
EN

Stack Overflow用户

发布于 2013-10-15 22:31:21

MS SQL和Oracle可以支持多个inserts,但您应该包装在一个事务中,因为如果中途发生错误,它将不会回滚整个SQL语句。要执行此操作,请在插入内容之间添加";“:

代码语言:javascript
复制
INSERT INTO table1 (1,2,3,'Test');INSERT INTO table1 (3,4,5,'Test');INSERT INTO table1 (6,7,8,'Test')

但是,使用MS Access可以做一个小技巧是创建一个数据表,以便通过UNIONing将一些数据插入到一起:

代码语言:javascript
复制
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了

这也适用于许多其他数据库,但它们的语法可能有所不同。这种方法的好处是它已经是事务性的,所以您不必将其包装在事务中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19372898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档