两个表roletype和usertable,usertable有冗余数据,如何保证数据的一致性呢?一致性问题:
1.roletype表更新时,要更新usertable中相关数据
2.usertable插入,更新时要保证和roletype中数据一致..create table
roletype
(
roleid number(8) primary key,
rolename varchar(50)
);create table
usertable
(
userid number(8) primary key,
name varchar(50),
roleid number(8), 
rolename varchar(50) not null,
constraints fk_userid foreign key (roleid) references roletype(roleid)
);是不是要建立两个触发器?还是用其它的方法来保证数据的一致性?

解决方案 »

  1.   

    怎么是一个触发器啊?要两个触发器吗,roletype表一个用来对update操作时同步更新usertable,usertable也要一个触发器用来对update和insert操作时检查rolename是否和roleid匹配
      

  2.   

    呵呵,roleid number(8) primary key,
        rolename varchar(50)
    是外键,级联更新就可以了
      

  3.   


    在usertable中,我已经把roleid设置成外键了,可是不能级联更新啊。
      

  4.   

    在usertable中,我已经把roleid设置成外键了,只是我如果在roletype中把rolename修改了,usertable不会更新,这怎么办呢?
      

  5.   

    一点考虑,不知是否正确:
    roletype表应该是一个静态表,极少发生变化,这样就不用对roletype建立trigger了,如果roletype修改数据时手工批量执行一个update操作就可以了。
    usertable变化比较频繁,可以对usertable建立一个trigger,修改roleid或插入数据时利用此trigger自动更新rolename的数据。