[讨论] 把SQL写在table里的好处?

楼主: littlethe (东周流浪汉)   2017-09-28 00:45:18
最近我看到一个状况,
是公司有人开个table来放sql,
要用sql时,就从这个table里把sql捞出来用,
我心想这样用sql捞sql来执行不是多此一举吗?
我问对方为何不用sp,
对方说怕sp太多,
可能我孤陋寡闻以前还真没看过这种做法,
所以我好奇来问问大家,
有遇到把sql放到table里来用的状况吗?
这样真的有好处吗?
作者: drajan (EasoN)   2017-09-28 00:49:00
建view就可以了
作者: giacch   2017-09-28 00:53:00
新增SP要签单子...
作者: vi000246 (Vi)   2017-09-28 00:57:00
有autoHokey...
作者: ripple0129 (perry tsai)   2017-09-28 01:09:00
多增加IO负担,SQL更新麻烦,想不到任何好处。
楼主: littlethe (东周流浪汉)   2017-09-28 01:09:00
我没有规定新增SP要签单子,所以他可以自己加SP
作者: ckvir (ckvir)   2017-09-28 01:21:00
没好处
作者: alog (A肉哥)   2017-09-28 02:28:00
没好处啊 SP太多真的影响到系统 排一个计画升级规格就好了在TABLE塞SQL来取代这些作业的情况会两种问题1. 安全性问题:权限划分不容易控管、数据库人员不会检查每一次执行时到底执行了什么 SQL 在里面,若该系统被内部人员手贱或刻意都会引发灾祸2. 缺乏标准化的概念、维护不容易、速度不见得比SP快我不太清楚到底这位工程师在担心什么..另外再补充 就是留意 command/sql injection 的问题没意外的话 执行你那张table的client端帐号权限>= 那张table所有sql所需权限所以只要那张 table 内在某种状况下 编写好的sql 被窜改成非原先预期的结果很有可能数据库人员连看都没看就直接给他跑下去了或是里面塞了一些可以直接写入资料到系统上的语法埋后门这都是一个问题所以说 SP 怕太多 .. 我不认同 但也只能尊重你们公司的人员毕竟我真的不晓得他在担心什么问题
作者: CGS0 (Mike Chen)   2017-09-28 07:35:00
看越久会发现天才很多,或许他以后想改一个地方 ,就直接修正
作者: testPtt (测试)   2017-09-28 08:20:00
直接编到程式不好吗?
作者: jj0321 (JJ与你倒数唷)   2017-09-28 08:40:00
还遇过JS放SQL呢
作者: nickerChen (黑鬼CHEN)   2017-09-28 09:03:00
光权限控管就很麻烦了;该不会他是想要程式版面比较干净吧
作者: mathrew (Joey)   2017-09-28 09:04:00
其实很多人是根本不知道有其他做法 就傻傻的一直用下去
作者: bobju (枯藤老树昏鸦)   2017-09-28 09:15:00
就只是一种便宜行事的手法而已 找个地方塞sql
作者: allenxxx (fufuxxx)   2017-09-28 10:06:00
补设计文件的时候好整理而已
作者: stevekevin10 (hippo泡)   2017-09-28 10:14:00
SP是指什么呀?
作者: iamshiao (CircleHsiao)   2017-09-28 10:19:00
sp = stored procedure
作者: chenxiaowoo (灶咪A嘎B)   2017-09-28 10:30:00
嗯~我是有把sql log放在cassandra里过,捞出来执行..还真没看过~至于优点...目前没想到
作者: b92310051 (蛤利)   2017-09-28 11:14:00
优点就是...程式开发时间会比写sp少...大概吧
作者: knives   2017-09-28 12:59:00
这以后坑一定很大,还不逃
作者: Adonisy (堂本瓜一)   2017-09-28 13:52:00
问他是不是没修过数据库...
作者: ChungLi5566 (中坜56哥)   2017-09-28 14:03:00
贵公司没有原始码扫描的工具吗 这有injection耶我db读的值拿去执行,还得经过白名单才能通过扫描
作者: dou0228 (7777)   2017-09-28 14:47:00
好处就是以后只有他改的动,别人不敢改
作者: jinmin88 (昼伏夜出)   2017-09-28 16:14:00
坑超大..赶快换工作吧
作者: testPtt (测试)   2017-09-28 16:30:00
有参数的SQL他要怎么做
作者: knives   2017-09-28 16:36:00
可能是用print 方式把参数代入,不过还是烂
作者: a47135 (金属史莱姆)   2017-09-28 17:15:00
可能更新数据库比更新程式简单XDDD
作者: pttuser (pttuser)   2017-09-28 19:12:00
我好像有见过,一种类似API概念,可能想把depend db的部份留在table,不过当初帮忙review没多问就给他review+2了,哈哈
作者: atpx (秋雨的心情)   2017-09-28 19:22:00
有种状况是系统本身就是要执行重复SQL的正常业务流程完毕的资料, user事后发现错误又不想重签核IT就会提供简易修改系统给user, 这系统只做执行sql改资料这个例子跟你的状况不太相同. 仅说明现实上会有这种状况
作者: accessdenied (存取违规)   2017-09-28 19:45:00
干,就上有政策下有对策的垃圾工程师!
作者: ncwd1225 (粉丝应该放水煮)   2017-09-28 20:57:00
没好处,后患无穷
楼主: littlethe (东周流浪汉)   2017-09-28 22:13:00
感谢各位高手的见解,因为小弟知识有限,实在想不到这样
作者: neo5277 (I am an agent of chaos)   2017-09-28 22:13:00
二楼整个突破盲点啊哈哈哈哈哈
楼主: littlethe (东周流浪汉)   2017-09-28 22:14:00
做的好处是什么,但又不希望我误会对方,所以向你们请教我已经禁止该工程师这样做了,我应该不用换工作啦,感谢版友们的好意提醒,我会多注意的to atpx,确实这状况和你讲的例子不同,你讲的例子我可以接受,但我状况是对方当常态在写,所以我想还是要禁止
作者: kasume (kk)   2017-09-28 23:38:00
前端依条件动态执行不同command , table放的可以是sql,sp,等,前端系统会有一定的parsing 逻辑动态弹性够的系统架构是会用这种方式的
楼主: littlethe (东周流浪汉)   2017-09-29 00:07:00
楼上你讲的是比较高阶的应用了,我们系统很普通
作者: ChungLi5566 (中坜56哥)   2017-09-29 00:11:00
比较好奇贵公司的程式写完不用源码检测跟黑箱吗检测报告就是很好的证据 可以驳回这种不安全的写法
楼主: littlethe (东周流浪汉)   2017-09-29 00:15:00
我才刚接手,而那工程师是前任主管,所以你可以想像囉
作者: asship (孤帆远影)   2017-09-29 00:43:00
是不是用来存 REDO 跟 UNDO 的 log 呢?
楼主: littlethe (东周流浪汉)   2017-09-29 01:11:00
真的不是log
作者: iFEELing (ing)   2017-09-29 01:47:00
我遇过的情况是程式上版有管控 所以AP把SQL藏在DB里...
作者: vn509942 (如履薄冰)   2017-09-29 08:34:00
五六年前玩过后续交手麻烦
作者: seedli (带骨的火腿)   2017-09-29 09:55:00
是DB版控用的吗... 明明就很多版控的软件啊 像liquibase
楼主: littlethe (东周流浪汉)   2017-09-29 22:39:00
不是版控用的,如果是用在特殊目的,我可以接受的

Links booklink

Contact Us: admin [ a t ] ucptt.com