日期:2014-05-17  浏览次数:21031 次

数据库初始值问题
INSERT INTO mes_user (SYSID, VERSION, USERNAME, PASSWORD, NICKNAME, ACTIVATIONDATE, EXPIRATIONDATE) VALUES 
  ('c4037b484bad49d5b5a800e8b3175cb8', 1, 'admin', '19a2854144b63a8f7617a6f225019b12', '', to_timestamp('2009-01-01','yyyy-mm-dd'), to_timestamp('2020-01-01','yyyy-mm-dd'));

/* Insert default user group */
INSERT INTO mes_usergroup (SYSID, VERSION, NAME, DESCRIPTION) VALUES 
  ('c4037caa4bad49d5b5a800e8b3175cb8', 56, 'admin', 'admin');

INSERT INTO lk_user_usergroup (TOID, FROMID) VALUES
('c4037caa4bad49d5b5a800e8b3175cb8', 'c4037b484bad49d5b5a800e8b3175cb8');
INSERT INTO lk_usergroup_useraccess (FROMID, TOID) VALUES 
  ('c4037caa4bad49d5b5a800e8b3175cb8', '0caf6aaac4da4b7980a786b21a4f5251');

这几个关联表中,红色的初始值是一样的,这样的可以吗?是不是不对啊?执行可以通过,但是更改不了!请大家指点!

------解决方案--------------------
楼主你好,因为不清楚你系统中具体的业务联系和功能,以及表结构,所以不敢妄下断言,但是这种情况是可能的。
分以下几种情况解释:
1,如果按习惯第一列都是主键,自增,当每个表对应不同的sequence和触发器,可以会出现相同的情况,若是公用一个sequence,那是不可能的。
2,如果不是sequence生成而是由前台代码或过程赋值,那么也是可能的,代码中设置的值可以是相同的。
3,如果你的第一列并非主键而是其他的列,或者是联合主键,看你的表名是跟用户和用户组相关的,假设sysid若是代表用户的id,那么这些表存储的是同一个用户的数据,它们之间进行业务流转也是可以的。
总结:表之间的主键值相不相同并不影响主外键之间建立联系,说白了,一个从1开始计数的用户表和从1开始计数的用户组表照样能建立联系啊,同一个用户当然也可以存在不同的表中啊,关键是弄清楚这些相同初始值所在的列都是什么含义,以及是否正确的实现了业务逻辑。
我猜测属于第3种的可能性为最高。