从一个表动态插入另一个表

时间:2015-11-21 19:43:05

标签: sql sql-server tsql stored-procedures

尝试将记录从一个表插入另一个表。目标表(@TableName)有三个额外的列而不是源表(@Sourcetable)。这三列是浮点列,设置为NULL。

只要插入有效,无论是插入零还是保留NULL都无关紧要

该程序因此而失败,并给出以下错误

  

列名或提供的值数与表不匹配   定义

请参阅以下程序,以下操作步骤中的任何注释:

var React = require('react');

var App = React.createClass({
  render: function() {
    return (
      <div>
        App!
      </div>
    )
  }
});

module.exports = App;

2 个答案:

答案 0 :(得分:1)

如果表定义不相同,则不能使用星号包含所有字段:

您必须使用类似

的内容
INSERT INTO table1 (col1, col2, col3, ...) SELECT col1, col2, col3, ... FROM table2

当你试图填写表格时,你可以尝试创建像这样的列列表

SELECT STUFF(
(
SELECT ',' + QUOTENAME(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='YourTableName'
FOR XML PATH('')),1,1,'')

此列列表必须包含在您的声明中......

答案 1 :(得分:0)

如果您没有相同的列,则必须明确列出它们。如果目标表有更多,那么你可以在插入端列出它们,如果源表有更多,那么在select中,但最好是在两者中列出它们。

你也可以使用select和insert的视图,这样列的数量就会匹配,但是无论如何有插入+ select *而不指定列都不是我推荐的,因为如果有人添加新内容它会破坏列到表中。