SQL Server:想要将数据插入一列,其余为空:不要让我

Cyn*_*hia 2 t-sql sql-server sql-server-2005 insert default-value

这是我的脚本:

INSERT INTO
 AP09
SELECT
  cds AS CDSCODE
FROM
  P_Schools
WHERE 
  active = 1;
Run Code Online (Sandbox Code Playgroud)

AP09表中有十列.除主键(CDSCODE)之外的所有键都可以为空.我只想从另一个表插入CDSCODE,其余的默认为null.相反,我得到一个错误:

SQL Server Database Error: Insert Error: Column name or number of supplied values does not match table definition.
Run Code Online (Sandbox Code Playgroud)

如果我提供正确数量的空值,则插入有效.但是Microsoft文档说(对于INSERT命令):

The Database Engine automatically provides a value for the column if the column: 

--Has an IDENTITY property. The next incremental identity value is used.
--Has a default. The default value for the column is used.
--Has a timestamp data type. The current timestamp value is used.
--Is nullable. A null value is used.
--Is a computed column. The calculated value is used.
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么这似乎不像宣传的那样工作?这花费了我很多时间,因为我必须为许多表做这个!(这是SQL Server 2005 BTW)

Vis*_*hal 7

由于表格 AP09CDSCODE没有相同数量的列...您需要指定要插入的列.尝试这样的事情 -

INSERT INTO
 AP09 (Col1)

SELECT
  cds AS CDSCODE 
FROM
  P_Schools
WHERE 
  active = 1;
Run Code Online (Sandbox Code Playgroud)