看板 Database 關於我們 聯絡資訊
資料庫名稱: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://www.ptt.cc/bbs/Database/M.1423238495.A.505.html
rockchangnew: 基本上建議指名欄位,用*較不建議 02/07 17:13
Goldbach: 有沒有辦法動態查所有欄位名稱,再放在INSERT後面? 02/07 17:57
Ammenze: 先確保你Table_A跟select的Table欄位設定都一樣,再下 02/09 10:11
Ammenze: Insert into Table_A Select * from....就可以了 02/09 10:12
moyasi: 就算有100欄位 也通通打出來吧 養成好習慣不建議用* 02/09 15:02
iFEELing: 1. 對 沒錯 要寫非常長 02/10 00:05
iFEELing: 2. 只要修改就一定會讓相依的物件失效 因為無法確定 02/10 00:06
iFEELing: 修改後這些欄位是否真的還是你想要的東西 02/10 00:06
iFEELing: 指定欄位名稱的話 新增欄位就不會受影響 02/10 00:09
iFEELing: 但是 select * 就會死掉 因為數量不對 02/10 00:09
iFEELing: 修改的話 如果DBMS只對數量不對名字 型態又符合 02/10 00:13
iFEELing: 可能有機會寫得進去 (? 02/10 00:14
iFEELing: 用 select * 的寫法 02/10 00:14
iFEELing: 刪除欄位的話應該用*或欄位名稱都會死掉 02/10 00:16