Oracle手动添加FK约束

时间:2010-05-06 07:34:20

标签: oracle guid key constraints manual

好吧,既然客户想要自动化某个进程,包括在LIVE数据库中创建一个新的键结构,我需要在tables.columns之间创建关系。 现在我找到了表ALL_CONS_COLS和USER_CONSTRAINTS来保存有关约束的信息。如果我要手动创建约束,通过插入这些表,我应该能够重新创建原始约束。 我的问题:还有更多的桌子我应该研究一下吗? 你有其他的建议吗,因为这听起来非常脏,容易出错。

目前的运作方式:

  • 在每个表中创建一个新列 PK;

  • 为此PK生成一个guid;

  • 在每个表中创建一个新列 FK;

  • 获取与
    相关的guid FK;

.......完成了......

  • 根据旧的添加新约束 一个;

  • 删除旧约束;

  • 重命名新列;

这有点狡猾,我宁愿改变我的方法,任何想法都会有所帮助。

为了区别对待,客户端希望在实时数据库上将密钥结构从int更改为guid。什么是解决这个问题的最佳方式

1 个答案:

答案 0 :(得分:4)

首先,您不要通过弄乱数据字典来创建/修改/删除约束,而是使用常规的ALTER TABLE t ADD / MODIFY / DROP CONSTRAINT语法。

在您的方案中,我认为您应该使用以下方案:

1)确保在此操作进行时没有人修改数据

2)首先删除旧的外键约束,以避免名称与新约束发生冲突。

3)删除旧的主键约束

4)在guid列

上创建新的主键约束

5)创建新的外键约束

然后你就完成了。

此致 罗布。