【发布时间】:2018-05-08 20:46:24
【问题描述】:
我正在编写一个新的变更集以在我的表上定义一个唯一键,但似乎以前的变更集在我的表中插入了重复的行(重复,我的意思是在我的新的目标列上具有相同值的两个条目唯一约束)。
由于生产限制,我无法修改以前的变更集。
所以,在添加约束之前,我想删除重复的行。
这是我的变更集:
{
"changeSet": {
"id": "123",
"author": "me",
"changes": [
{
"delete": {
"tableName": "foo",
"where": "name = 'myname'"
}
},
{
"insert": {
"tableName": "foo",
"columns": [
{
"column": {
"name": "id",
"valueSequenceNext" : "foo_seq"
}
},
{
"column": {
"name": "name",
"valueComputed": "myname"
}
}
]
}
},
{
"addUniqueConstraint": {
"columnNames": "name",
"constraintName": "uk_fooname",
"tableName": "foo"
}
}
]
}
假设我的重复条目名称为“myname”。如您所见,我正在删除所有重复的条目,然后我必须重新插入我唯一的条目。
我必须在删除语句中只删除一个重复的行,而不是删除两个然后再次插入。但我找不到任何解决方案来在 row_number 上设置 where 条件。
有人知道如何在 where 子句中添加行号吗?
感谢您的帮助。
【问题讨论】:
标签: liquibase