我想在列上输入 fk 或索引,仅当此类约束不存在时。如果它存在,并且名称不是我想要的,只需重命名它,否则什么都不做。为此,我正在检查 SQL 服务器的 sys 表或 Oracle 的 all_... 表。
这是我尽可能简化的问题:
index_name column_name
on_multiple_columns1 a
on_multiple_columns1 b
on_multiple_columns2 a
on_multiple_columns2 b
on_multiple_columns2 c
on_single_column1 b
on_single_column2 c
现在我需要一个 select index_name into @constraintToRename 语句,所以我可以将@constraintToRename 重命名为“myName”,如果它存在并且还没有名称“myName”,或者如果它不存在则只创建一个新名称。我将提供有关该列和“myName”的信息,例如:
select index_name into @toRename from 'some_index_table' join 'some_other_index_table' where '索引仅在我现在输入的列上指定,因此不会返回多个列索引等等'
就我而言,我想在 b 列上输入带有 myName = test 的索引。当我只为 b 列选择名称时,我会得到 3 个索引(on_multiple_columns1、on_multiple_columns2 和正确的一个 on_single_column1),但我只需要 on_single_column1 以便我可以重命名它以进行测试。我该怎么做这个选择?就像是
select ... where column = 'my_column' and count(index_names) = 1
或者
select .... where column = 'my_column' and index_name !corresponds to other columns :)
如何在 SQL 中表达这一点?谢谢sss