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

看板Database作者 (Ray)時間11年前 (2015/02/07 00:01), 編輯推噓5(509)
留言14則, 5人參與, 最新討論串1/1
資料庫名稱: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

02/07 17:13, , 1F
基本上建議指名欄位,用*較不建議
02/07 17:13, 1F

02/07 17:57, , 2F
有沒有辦法動態查所有欄位名稱,再放在INSERT後面?
02/07 17:57, 2F

02/09 10:11, , 3F
先確保你Table_A跟select的Table欄位設定都一樣,再下
02/09 10:11, 3F

02/09 10:12, , 4F
Insert into Table_A Select * from....就可以了
02/09 10:12, 4F

02/09 15:02, , 5F
就算有100欄位 也通通打出來吧 養成好習慣不建議用*
02/09 15:02, 5F

02/10 00:05, , 6F
1. 對 沒錯 要寫非常長
02/10 00:05, 6F

02/10 00:06, , 7F
2. 只要修改就一定會讓相依的物件失效 因為無法確定
02/10 00:06, 7F

02/10 00:06, , 8F
修改後這些欄位是否真的還是你想要的東西
02/10 00:06, 8F

02/10 00:09, , 9F
指定欄位名稱的話 新增欄位就不會受影響
02/10 00:09, 9F

02/10 00:09, , 10F
但是 select * 就會死掉 因為數量不對
02/10 00:09, 10F

02/10 00:13, , 11F
修改的話 如果DBMS只對數量不對名字 型態又符合
02/10 00:13, 11F

02/10 00:14, , 12F
可能有機會寫得進去 (?
02/10 00:14, 12F

02/10 00:14, , 13F
用 select * 的寫法
02/10 00:14, 13F

02/10 00:16, , 14F
刪除欄位的話應該用*或欄位名稱都會死掉
02/10 00:16, 14F
文章代碼(AID): #1KrELVK5 (Database)