SELECT *(除Identity外)来自

| 我有一个约有20列的表格,我希望复制一条记录。我可以做:
INSERT INTO [Table] (ColumnA, ColumnB, ColumnC, .... ColumnZ)
SELECT TOP 1 ColumnA, ColumnB, ColumnC, .... ColumnZ
FROM [Table]
WHERE ID=@ID
但是,这将很耗时,并且如果将来将来在表中添加新列,我希望可以自动复制。因此,我正在寻找某种方式:
INSERT INTO [Table]
SELECT TOP 1 * (apart from identity)
FROM [Table]
WHERE ID=@ID
这可能吗?     
已邀请:
SQL Server不提供任何类型的“除身份之外的” select *”功能,您必须通过指定每一列来自己编写。如果表的列定义将随时间而变化(添加,重命名或删除列),则唯一的方法是使用动态代码,基于sys.columns的内容为object_kd = object_id构建insert语句(\'YourTable \'),如果存在身份列,则排除身份列。为了我的钱,如果添加列,那么最好查看并更新引用该表的代码。 哦,如果ID是主键,那么不需要
top 1
。     
一种方法,但将获取所有列
SELECT TOP 1 * 
INTO [NewTable]
FROM [Table]
WHERE ID=@ID
您的另一个选择是动态SQL,从
information_schema.columns
构建列列表,跳过带有标识的列,然后执行动态sql     

要回复问题请先登录注册