我有一張有很多列的表格。例如我有一個表,這些列:複製有特殊條件的行
ID,Fname,Lname,Tel,Mob,Email,Job,Code,Company,......
ID
列是自動編號列。我想將此表中的所有行復制到此表中,並將此複製行中的company
列值更改爲12。我不想寫所有列的名字,因爲我有很多列的列很多。
我想這個代碼,但我有此錯誤:
declare @c int;
declare @i int;
select * into CmDet from CmDet;
select @C= count(id) from CmDet;
while @i < @C
begin
UPDATE CmDet
SET company =12
WHERE company=11
set @i += 1
end
錯誤:
消息2714,級別16,狀態6,3號線
已經有一個名爲「CmDet對象'在數據庫中。
我改變了代碼,這
declare @c int
declare @i int
insert into CmDet select * from CmDet;
select @C= count(id) from CmDet;
while @i < @C
begin
UPDATE CmDet
SET company =12
WHERE company=11
set @i += 1
end
,我有此錯誤:
消息8101,級別16,狀態1,3號線爲 標識列的顯式值在'CmDet'表中,只能在列 使用列且IDENTITY_INSERT爲ON時指定。
我該怎麼辦?
我寫這樣的代碼:
drop table temp2;
declare @c bigint ;
select @C= count(id) from CmDet2;
SELECT *
INTO temp2
FROM CmDet2;
ALTER TABLE temp2
drop column ID;
update temp2 set company='12';
SET IDENTITY_INSERT dbo.CmDet2 ON
insert into CmDet2 select * from temp2;
SET IDENTITY_INSERT dbo.CmDet2 OFF;
,但我有這個錯誤還:
消息545,級別16,狀態1,11號線 顯式值必須爲標識列指定在表'CmDet2'中,當IDENTITY_INSERT設置爲ON或複製用戶插入NOT FOR REPLICATION標識列時。
您是從一張表複製到同一個表中?那麼,您將不得不使用INSERT INTO dbo.CmDet(company,col1,col2,....,colN)SELECT 12,col1,col2,...,colN FROM dbo。CmDet WHERE Company = 11'來實現這一目標。另外:你需要確保**避免**指定'ID'(身份)列 - 因爲你不能將值插入到該列中 - SQL Server負責這個..... – 2012-03-20 11:23:45
你可以很容易地創建一個列表你可以使用[米奇小麥這個方便的提示](http://mitch-wheat.blogspot.com/2011/04/ssms-table-column-list-tip.html) - 然後只刪除那些你不需要的列('ID') – 2012-03-20 11:30:17
是的,我想複製到同一個表中。但我不想寫列名,因爲我有很多列的列很多。我想寫一個查詢,並更改表名和exec。 – 2012-03-20 11:30:17