V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
wjfz
V2EX  ›  MySQL

要不要用触发器?

  •  1
     
  •   wjfz · 2015-11-02 16:24:50 +08:00 · 4731 次点击
    这是一个创建于 3314 天前的主题,其中的信息可能已经有所发展或是发生改变。
    优点:代码逻辑会简单一点;
    缺点:怕以后接手的哥们儿不好处理。

    所以你是怎么选择的?
    19 条回复    2015-11-03 12:02:45 +08:00
    neoblackcap
        1
    neoblackcap  
       2015-11-02 16:27:08 +08:00   ❤️ 1
    有 DBA 的可以上,没有的话,你还能指望每个 RD 都能填你数据库的坑?
    yangtukun1412
        2
    yangtukun1412  
       2015-11-02 17:07:58 +08:00
    很多云平台是不支持 trigger 的
    Felldeadbird
        3
    Felldeadbird  
       2015-11-02 17:19:53 +08:00   ❤️ 1
    支持 1 楼。 触发器这东西嘛,用得好的话,省事省力。但是用不好的话,坑死人。特别是 大多数开发都兼顾 DB 设计。 大多数都不会用触发器的。毕竟 一不小心,掉坑了
    southwolf
        4
    southwolf  
       2015-11-02 17:23:49 +08:00   ❤️ 1
    好多 MySQL 的项目连外键都不用 更不用说视图、触发器、存储过程啥的了……
    linnchord
        5
    linnchord  
       2015-11-02 17:28:17 +08:00 via iPhone   ❤️ 1
    原则上不用,除非个别极端情况。例如希望在不修改代码的情况下实现某些逻辑。
    pelloz
        6
    pelloz  
       2015-11-02 17:30:56 +08:00   ❤️ 1
    除非你们有专门的 DBA 去维护,要不然不要用那些东西。逻辑请直接写到代码里面,数据库就只管存数据。
    dong3580
        7
    dong3580  
       2015-11-02 17:38:52 +08:00   ❤️ 1
    千万不要,千万不要,千万不要。
    上次全部更换数据库,存储过程和触发,改的想死,
    ruchee
        8
    ruchee  
       2015-11-02 17:40:23 +08:00   ❤️ 2
    观点同 @neoblackcap @Felldeadbird @southwolf
    没专业 DBA 坐镇,别用这些高级玩意,数据库,存取数据就完成使命了,逻辑全部写在代码里,清晰易懂,还可以纳入版本管理
    echo1937
        9
    echo1937  
       2015-11-02 19:02:02 +08:00   ❤️ 2
    触发器和外键之类的高级性能,对 DB 的性能,扩展和维护都会带来额外负担,你获得的那点好处,完全值不回以后要填的坑。

    毕竟 DB Server 的扩展难度可比 App Server 大得多,所以即使团队有专业 DBA ,一般也不会推荐你用触发器。
    bearzk
        10
    bearzk  
       2015-11-02 19:34:14 +08:00   ❤️ 1
    我们有专业 DBA 用了 trigger 效果也不错 不过他不在的时候我们都不确定咋搞这个 无奈 所以建议还是不要用了
    UtopiaCHN
        11
    UtopiaCHN  
       2015-11-02 20:18:44 +08:00 via iPhone
    测试
    wizardforcel
        12
    wizardforcel  
       2015-11-02 20:20:45 +08:00   ❤️ 1
    如果你以后打算一直用 mysql 就用。
    virusdefender
        13
    virusdefender  
       2015-11-02 20:36:22 +08:00   ❤️ 1
    能把逻辑写代码的我都写代码,尽量与数据库无关,以后拓展也方便些
    Zzzzzzzzz
        14
    Zzzzzzzzz  
       2015-11-02 20:42:18 +08:00
    @southwolf 虽说 DB 里减少使用这些是为了维护和迁移, 但是 MySQL 里用得不多主要是这些功能早年都没有。。。。
    xAx
        15
    xAx  
       2015-11-02 20:51:19 +08:00   ❤️ 2
    项目一直用的 oracle,除了索引、视图、序列,其他全部 [禁止] 使用。

    一是使项目与数据库无关。二是代码中表现出来的业务逻辑是完整的。三是代码就能完成,没事去弄数据库做什么。
    更重要的是:反正我是不知道触发器、存储过程什么的怎么打断点去调试。
    kiwi95
        16
    kiwi95  
       2015-11-02 21:13:01 +08:00
    @southwolf 视图用的还是挺多的,其他的却是不太常用
    akira
        17
    akira  
       2015-11-02 23:37:43 +08:00   ❤️ 1
    见仁见智了。
    反正个人是完全不建议使用触发器的,不管是为了避免未来的数据库迁移 /维护,还是更换开发 /维护人员,没有触发器都是会更容易。
    chenzhuo
        18
    chenzhuo  
       2015-11-03 11:40:44 +08:00
    用个触发器还要有 dba 才行?
    realpg
        19
    realpg  
       2015-11-03 12:02:45 +08:00   ❤️ 1
    发到 MySQL 板块,告诉你千万别用的十有八九是搞 PHP 的…………

    真正大型项目,存储过程常态化,触发器满地。
    做好文档。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 15:29 · PVG 23:29 · LAX 07:29 · JFK 10:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.