好吧,既然客户想要自动化某个进程,包括在LIVE数据库中创建一个新的键结构,我需要在tables.columns之间创建关系。 现在我找到了表ALL_CONS_COLS和USER_CONSTRAINTS来保存有关约束的信息。如果我要手动创建约束,通过插入这些表,我应该能够重新创建原始约束。 我的问题:还有更多的桌子我应该研究一下吗? 你有其他的建议吗,因为这听起来非常脏,容易出错。
目前的运作方式:
在每个表中创建一个新列 PK;
为此PK生成一个guid;
在每个表中创建一个新列 FK;
获取与
相关的guid
FK;
.......完成了......
根据旧的添加新约束 一个;
删除旧约束;
重命名新列;
这有点狡猾,我宁愿改变我的方法,任何想法都会有所帮助。
为了区别对待,客户端希望在实时数据库上将密钥结构从int更改为guid。什么是解决这个问题的最佳方式
答案 0 :(得分:4)
首先,您不要通过弄乱数据字典来创建/修改/删除约束,而是使用常规的ALTER TABLE t ADD / MODIFY / DROP CONSTRAINT语法。
在您的方案中,我认为您应该使用以下方案:
1)确保在此操作进行时没有人修改数据
2)首先删除旧的外键约束,以避免名称与新约束发生冲突。
3)删除旧的主键约束
4)在guid列
上创建新的主键约束5)创建新的外键约束
然后你就完成了。
此致 罗布。