我有一个表,该表的列上放置了唯一约束。
现在我们发现我们需要消除这个不正确的约束。
约束没有明确命名。
我可以通过以下查询获得相关约束的名称:
SELECT
s.constrname
FROM informix.sysconstraints s
INNER JOIN informix.systables t ON t.tabid = s.tabid
INNER JOIN informix.syscolumns c ON c.tabid = t.tabid
WHERE t.tabname = 'the_table'
AND c.colname = 'the_column'
AND s.constrtype = 'U'
现在我需要动态地为DROP CONSTRAINT
语句提供这个约束名称。
我想我可以创建一个使用变量和连接运算符执行此操作的存储过程,然后运行它,然后杀死它。肯定有更快、更便宜、一次性的方法来做到这一点吗? EXECUTE IMMEDIATE
或类似的东西——尽管我承认从阅读它的文档中我看不出该声明对我有什么特别的帮助。
这必须在 Informix 11.5 和更高版本上运行。感谢您在这里的任何帮助。