作者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/cn.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