之前写SQL的时候都是小的,所以感觉有点浅.现在做个管理系统,我想问一下,
表的更新,是不是要用到 触发器哈?
之前我觉得,在关系表里搞个 主键对应外键,就可以了...难道关系表没有作用?

解决方案 »

  1.   

    触发器(trigger)主要是为了保证数据的完整性而设计的,在执行某个操作的同时,“触发”别的事件的发生。
    首选主外键,保证引用完整性。在很少的情况下,才会使用到触发器。一般不用,因为触发器会锁表。
      

  2.   

    比如,你对A表执行了insert操作,你建立了一个触发器对A表的insert进行监控,触发器的原理就是如果你对A表执行了insert操作,触发器会自动“触发”,如果你在这个触发器中执行了insert B表的操作,然后就保证了数据的同步。
      

  3.   

    我看见书上说触发器性能很低.
    主外键引用,我怎么更新不了...我第一次用...你可以先这么理解。
    主外键是在数据库里面设置的。如果设置了主外键,你在程序中直接删除主表数据的话会报错,只能先删除子表,然后删除主表相关数据。更新的话,更新子表的关联外键,必须要在主键中存在,否则也更新不了。如果不用触发器,那不可以做到相互同步么? 主键要存在的道理我懂,我想做的是这样:
    我的T_Main表中有 FName,FAge,FProvinceName,FCityName.
    我的T_Sub表中有 FName,FAge.
    我只是想要做的是,不管在 T_Main或表 T_Sub中,修改都会同步.我一直简单 关系表中的主外键是这样的作用.
    难道不是么?要不然我真的觉得,关系表的概念好像多余了...
      

  4.   

    我看见书上说触发器性能很低.
    主外键引用,我怎么更新不了...我第一次用...你可以先这么理解。
    主外键是在数据库里面设置的。如果设置了主外键,你在程序中直接删除主表数据的话会报错,只能先删除子表,然后删除主表相关数据。更新的话,更新子表的关联外键,必须要在主键中存在,否则也更新不了。如果不用触发器,那不可以做到相互同步么? 主键要存在的道理我懂,我想做的是这样:
    我的T_Main表中有 FName,FAge,FProvinceName,FCityName.
    我的T_Sub表中有 FName,FAge.
    我只是想要做的是,不管在 T_Main或表 T_Sub中,修改都会同步.我一直简单 关系表中的主外键是这样的作用.
    难道不是么?要不然我真的觉得,关系表的概念好像多余了...你这种情况就要建触发器了,主外键解决不了这个问题。
      

  5.   

    我看见书上说触发器性能很低.
    主外键引用,我怎么更新不了...我第一次用...你可以先这么理解。
    主外键是在数据库里面设置的。如果设置了主外键,你在程序中直接删除主表数据的话会报错,只能先删除子表,然后删除主表相关数据。更新的话,更新子表的关联外键,必须要在主键中存在,否则也更新不了。如果不用触发器,那不可以做到相互同步么? 主键要存在的道理我懂,我想做的是这样:
    我的T_Main表中有 FName,FAge,FProvinceName,FCityName.
    我的T_Sub表中有 FName,FAge.
    我只是想要做的是,不管在 T_Main或表 T_Sub中,修改都会同步.我一直简单 关系表中的主外键是这样的作用.
    难道不是么?要不然我真的觉得,关系表的概念好像多余了...你这种情况就要建触发器了,主外键解决不了这个问题。
    要用到触发器?
    我搜一下,主外键貌似是用来做索引,来提高查询性能而已?
    貌似同步的功能在关系表中无法完成哦....是么?
      

  6.   

    是的。主外键是用来保证引用完整性的,可以用sql查询语句进行关联,提高查询效率。
      

  7.   

    我看见书上说触发器性能很低.
    主外键引用,我怎么更新不了...我第一次用...你可以先这么理解。
    主外键是在数据库里面设置的。如果设置了主外键,你在程序中直接删除主表数据的话会报错,只能先删除子表,然后删除主表相关数据。更新的话,更新子表的关联外键,必须要在主键中存在,否则也更新不了。如果不用触发器,那不可以做到相互同步么? 主键要存在的道理我懂,我想做的是这样:
    我的T_Main表中有 FName,FAge,FProvinceName,FCityName.
    我的T_Sub表中有 FName,FAge.
    我只是想要做的是,不管在 T_Main或表 T_Sub中,修改都会同步.我一直简单 关系表中的主外键是这样的作用.
    难道不是么?要不然我真的觉得,关系表的概念好像多余了...你这种情况就要建触发器了,主外键解决不了这个问题。不对不对...我问错了...我想问的是,我们谈的建立关系...能和我说下有什么作用么?