0

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

目前的作案手法:

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

  • 为这个 PK 生成一个指南;

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


  • 获取与FK关联的 guid ;

.......到目前为止完成......

  • 在旧约束的基础上增加新的约束

  • 删除旧约束;

  • 重命名新列;

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

换句话说,客户希望在实时数据库上将密钥结构从 int 更改为 guid。解决这个问题的最佳方法是什么

4

1 回答 1

4

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

在您的场景中,我认为您应该使用以下场景:

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

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

3)删除旧的主键约束

4) 在 guid 列上创建新的主键约束

5) 创建新的外键约束

然后你就完成了。

问候,罗布。

于 2010-05-06T08:15:06.693 回答