我正在努力为同事做一些Oracle工作,并陷入困境.在尝试编写脚本以将列修改为可为空时,我遇到了可爱的ORA-01451错误:
ORA-01451: column to be modified to NULL cannot be modified to NULL
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为列已经是NULL.我们有几个需要更新的数据库,所以在我错误的假设中,我认为将其设置为NULL应该全面工作以确保每个人都是最新的,无论他们是否已将此列手动设置为可为空.但是,对于已经将列作为可空的一些人来说,这显然会导致错误.
如何检查列是否已经可以为空以避免错误?能够实现这个想法的东西:
IF( MyTable.MyColumn IS NOT NULLABLE)
ALTER TABLE MyTable MODIFY(MyColumn NULL);
Run Code Online (Sandbox Code Playgroud)