我想代替一位同事做一些甲骨文的工作,但遇到了麻烦.在try 编写脚本将列修改为可为空时,我遇到了可爱的ORA-01451错误:
ORA-01451: column to be modified to NULL cannot be modified to NULL
之所以会发生这种情况,是因为该列已经为NULL.我们有几个数据库需要更新,因此在我错误的假设中,我认为将其设置为NULL应该可以全面发挥作用,以确保每个人都是最新的,无论他们是否手动将此列设置为可为空.但是,对于一些已经将该列设置为可以为空的人来说,这显然会导致错误.
如何判断一个列是否已经可以为空以避免错误?可以实现这个 idea 的东西:
IF( MyTable.MyColumn IS NOT NULLABLE)
ALTER TABLE MyTable MODIFY(MyColumn NULL);