引用:
原帖由 yunshan 于 2008-4-15 17:43 发表 
我觉得这样改users的主键是很不合理的,可能会引发很多问题,比如cq api的使用等等。
要显示用户fullname的列表,最好使用其他途径,如hook等。
如果在保证所有用户的fullname不为空,且不重复的前提下,我觉得没有太大的风险.
其实不管主键是什么字段,reference时候保存在数据库里的是userid,不是login_name,也不是fullname,这里修改主键以后,只是在显示用户的时候换了一个字段而已,不会造成太大的影响.
个人观点,仅供参考.其实以前我尝试过 新建字段 + hook 的方式来实现这个功能,不过由于现在的系统中有不下50个user字段,修改起来工作量非常大,因此我才想出这样的处理办法.
我把修改的方法列出来,就算是大家切磋一下,真正要这样做的话还是要谨慎一点.
在测试库和生产库中运行如下sql(生产库可以先不执行,在测试库完全测试通过后再变更到生产库中):
Update unique_key_def Set fielddef_id = 16777316 Where entitydef_id = 16777234;
在schema库中运行如下sql:
Update m_unique_key_def Set fielddef_id = 16777316 Where entitydef_id = 16777234;
Commit以后查看users对象,唯一键已经变化了.
接下来的工作,是在hook中查询GetUserLoginName,把所有找到的内容替换成GetUserFullName.
最后还要强调,在执行上面的脚本前,请务必保证所有用户的fullname不为空,且不重复的前提.