作者Goldbach (Ray)
看板Database
標題[SQL ] INSERT INTO ... SELECT 的問題
時間Sat Feb 7 00:01:33 2015
資料庫名稱:Microsoft SQL Server
資料庫版本:2000
內容/問題描述:
假設有一個觸發程式,使用INSERT語法如下:
INSERT INTO TABLE_A (COL_1, COL_2) SELECT * FROM deleted
小弟有個疑問,TABLE_A 有2個欄位寫上面這樣,
如果有20個欄位那需要寫非常長,
而且 TABLE_A 的欄位只要新增、刪除或修改,這個觸發程式就失效了,
所以小弟希望找到改寫語法,不要包含欄位名稱的資訊,
這樣比較有彈性,感謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.43.116
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Database/M.1423238495.A.505.html
1F:推 rockchangnew: 基本上建議指名欄位,用*較不建議 02/07 17:13
2F:→ Goldbach: 有沒有辦法動態查所有欄位名稱,再放在INSERT後面? 02/07 17:57
3F:推 Ammenze: 先確保你Table_A跟select的Table欄位設定都一樣,再下 02/09 10:11
4F:→ Ammenze: Insert into Table_A Select * from....就可以了 02/09 10:12
5F:推 moyasi: 就算有100欄位 也通通打出來吧 養成好習慣不建議用* 02/09 15:02
6F:推 iFEELing: 1. 對 沒錯 要寫非常長 02/10 00:05
7F:→ iFEELing: 2. 只要修改就一定會讓相依的物件失效 因為無法確定 02/10 00:06
8F:→ iFEELing: 修改後這些欄位是否真的還是你想要的東西 02/10 00:06
9F:→ iFEELing: 指定欄位名稱的話 新增欄位就不會受影響 02/10 00:09
10F:→ iFEELing: 但是 select * 就會死掉 因為數量不對 02/10 00:09
11F:推 iFEELing: 修改的話 如果DBMS只對數量不對名字 型態又符合 02/10 00:13
12F:→ iFEELing: 可能有機會寫得進去 (? 02/10 00:14
13F:→ iFEELing: 用 select * 的寫法 02/10 00:14
14F:→ iFEELing: 刪除欄位的話應該用*或欄位名稱都會死掉 02/10 00:16