想问一下 groovy脚本添加列的时候,如果列已经存在,该怎么办
(PS:之前没有使用groovy脚本进行维护数据库表字段以及数据,现在用groovy脚本进行维护,但列已经存在,出现了列冲突该怎么办)
比如:fd_project中有一个列:is_delete,该列是使用alter table fd_project add column id_delete varchar(1) 进行添加;
但是现在想使用groovy 脚本进行维护,如下图
想问一下 groovy脚本添加列的时候,如果列已经存在,该怎么办
(PS:之前没有使用groovy脚本进行维护数据库表字段以及数据,现在用groovy脚本进行维护,但列已经存在,出现了列冲突该怎么办)
比如:fd_project中有一个列:is_delete,该列是使用alter table fd_project add column id_delete varchar(1) 进行添加;
但是现在想使用groovy 脚本进行维护,如下图
可以用这个标签进行条件判断 如果列存在就不创建了
数据库中有那一列的数据groovy中就不再写添加那一列的配置了啊,后面需要修改字段才去groovy里面写changeSet
databaseChangeLog(logicalFilePath: '') {
preConditions(onFail: 'WARN') {
and {
dbms(type: 'mysql')
runningAs(username: 'root')
or {
changeSetExecuted(id: '', author: '', changeLogFile: '')
columnExists(schemaName: '', tableName: '', columnName: '')
tableExists(schemaName: '', tableName: '')
viewExists(schemaName: '', viewName: '')
foreignKeyConstraintExists(schemaName: '', foreignKeyName: '')
indexExists(schemaName: '', indexName: '')
sequenceExists(schemaName: '', sequenceName: '')
primaryKeyExists(schemaName: '', primaryKeyName: '', tableName: '')
sqlCheck(expectedResult: '') {
"SELECT COUNT(1) FROM monkey WHERE status='angry'"
}
customPrecondition(className: '') {
tableName('our_table')
count(42)
}
}
}
}
}
求解precondition是怎么用的,昨天试了一天都没行
databaseChangeLog(logicalFilePath: '') { preConditions(onFail: 'WARN') { and { dbms(type: 'mysql') runningAs(username: 'root') or { changeSetExecuted(id: '', author: '', changeLogFile: '') columnExists(schemaName: '', tableName: '', columnName: '') tableExists(schemaName: '', tableName: '') viewExists(schemaName: '', viewName: '') foreignKeyConstraintExists(schemaName: '', foreignKeyName: '') indexExists(schemaName: '', indexName: '') sequenceExists(schemaName: '', sequenceName: '') primaryKeyExists(schemaName: '', primaryKeyName: '', tableName: '') sqlCheck(expectedResult: '') { "SELECT COUNT(1) FROM monkey WHERE status='angry'" } customPrecondition(className: '') { tableName('our_table') count(42) } } } } }
求解一个表/列存在就不创建这样一个的例子
changeSet(author: 'zmf', id: '2019-12-12-add-project-code-type-constraint') {
preConditions(onFail: 'MARK_RAN') {
columnExists(tableName: "devops_env", columnName:"project_id")
columnExists(tableName: "devops_env", columnName:"code")
columnExists(tableName: "devops_env", columnName:"type")
sqlCheck(expectedResult: "0", sql: """
SELECT COUNT(1)
FROM (SELECT 1
FROM devops_env duplication
WHERE duplication.project_id IS NOT NULL
AND duplication.code IS NOT NULL
AND duplication.type IS NOT NULL
GROUP BY duplication.project_id, duplication.code, duplication.type
HAVING COUNT(1) > 1) tmp""")
}
addUniqueConstraint(tableName: 'devops_env',
constraintName: 'devops_env_uk_project_code_type', columnNames: 'project_id,code,type')
}
感谢感谢,能在来一个简单点的吗
比如就一个判断表/列不存在,就创建表/列的
被自己给菜到