如何在Oracle数据库中用Liquibase YAML移除列的IDENTITY属性?
在Oracle中通过Liquibase移除列的IDENTITY属性
问题根源:Liquibase的
modifyDataType配合autoIncrement: false无法正确移除Oracle列的IDENTITY属性。因为Oracle的IDENTITY是列定义的固有组成部分,并非独立的自增开关,该配置无法触发Oracle所需的alter table ... drop identity原生SQL执行。直接解决方案:使用
sql标签执行原生Oracle SQL语句,这是最可靠的处理方式,示例YAML变更集如下:
databaseChangeLog: - changeSet: id: remove-identity-from-mytable-mycolumn author: your-name changes: - sql: sql: alter table MYTABLE modify MYCOLUMN drop identity;
- 验证方式:执行
liquibase update后,可通过以下SQL查询Oracle系统视图确认IDENTITY属性已移除:
select identity_column, generation_type from all_tab_columns where table_name = 'MYTABLE' and column_name = 'MYCOLUMN';
若返回结果中IDENTITY_COLUMN值为'NO',则说明操作成功。
内容的提问来源于stack exchange,提问作者Adriano Frota
相关产品推荐
相关产品推荐

