我想将备份表 foo_bk 中的所有记录插入到 foot 表中,而不指定特定的列。
如果我尝试这个查询
INSERT INTO foo
SELECT *
FROM foo_bk
我会收到错误“插入错误:列名称或提供的值的数量与表定义不匹配。”
是否可以在不提供列名的情况下从一个表批量插入到另一个表?
我用谷歌搜索过但似乎找不到答案。所有答案都需要特定的列。
你不应该想要这样做。 Select * 不应该用作插入的基础,因为列可能会移动并破坏您的插入(或者更糟糕的是,不会破坏您的插入但会弄乱您的数据。假设有人在 select 中向表中添加了一列,但没有在另一个表,你的代码将会崩溃。或者假设有人,出于超出理解但经常发生的原因,决定在表上进行删除并重新创建,并将列移动到不同的顺序。现在你的姓氏是名字的位置in 最初和 select * 会将其放入另一个表中的错误列中。如果未能指定列以及一列到您感兴趣的表中所需列的具体映射,这是一种非常糟糕的做法。
现在您可能会遇到几个问题,首先这两个结构不直接匹配,或者其次要插入的表具有标识列,因此即使可插入列是直接匹配的,要插入的表也比要插入的表多了一列另一个并且不指定数据库假设您将尝试插入到该列。或者您可能具有相同数量的列,但其中一个是身份,因此无法插入(尽管我认为这将是不同的错误消息)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)