[SQL ] INSERT INTO ... SELECT 的問題

作者: Goldbach (Ray)   2015-02-07 00:01:33
資料庫名稱:Microsoft SQL Server
資料庫版本:2000
內容/問題描述:
假設有一個觸發程式,使用INSERT語法如下:
INSERT INTO TABLE_A (COL_1, COL_2) SELECT * FROM deleted
小弟有個疑問,TABLE_A 有2個欄位寫上面這樣,
如果有20個欄位那需要寫非常長,
而且 TABLE_A 的欄位只要新增、刪除或修改,這個觸發程式就失效了,
所以小弟希望找到改寫語法,不要包含欄位名稱的資訊,
這樣比較有彈性,感謝~
作者: rockchangnew (rock)   2015-02-07 17:13:00
基本上建議指名欄位,用*較不建議
作者: Goldbach (Ray)   2015-02-07 17:57:00
有沒有辦法動態查所有欄位名稱,再放在INSERT後面?
作者: Ammenze (藍天白雲)   2015-02-09 10:11:00
先確保你Table_A跟select的Table欄位設定都一樣,再下Insert into Table_A Select * from....就可以了
作者: moyasi (Simple Life)   2015-02-09 15:02:00
就算有100欄位 也通通打出來吧 養成好習慣不建議用*
作者: iFEELing (ing)   2015-02-10 00:05:00
1. 對 沒錯 要寫非常長2. 只要修改就一定會讓相依的物件失效 因為無法確定修改後這些欄位是否真的還是你想要的東西指定欄位名稱的話 新增欄位就不會受影響但是 select * 就會死掉 因為數量不對修改的話 如果DBMS只對數量不對名字 型態又符合可能有機會寫得進去 (?用 select * 的寫法刪除欄位的話應該用*或欄位名稱都會死掉

Links booklink

Contact Us: admin [ a t ] ucptt.com