gpt4 book ai didi

sql - Firebird SQL : Subquery within an ALTER statement?

转载 作者:行者123 更新时间:2023-12-02 08:53:58 26 4
gpt4 key购买 nike

我有一个 firebird 数据库架构,它是由各种 CREATE TABLE 脚本设置的。这些脚本已提交到源代码控制系统(请参阅 Scott Allen's 站点)。

现在我想创建一个新脚本,在其中我希望数据库删除特定表中某一列的 NOT NULL 约束:

ALTER TABLE myTable DROP CONSTRAINT c

约束的名称(例如 INTEG_219)可以通过查询系统表来获取:

SELECT rc.rdb$constraint_name
FROM rdb$relation_constraints rc
join rdb$check_constraints cc
on rc.rdb$constraint_name = cc.rdb$constraint_name
WHERE rc.rdb$constraint_type = 'NOT NULL'
and rc.rdb$relation_name = 'MYTABLE'
and cc.rdb$trigger_name = 'ACOLUMN'

这些语句可以组合成一个 ALTER 命令吗?

最佳答案

我建议你看看EXECUTE STATEMENT .

这里是firebird faq

execute BLOCK 
as declare variable stmt VARCHAR(2500) = 'SELECT ''ALTER TABLE MYTABLE myTable DROP CONSTRAINT ''|| rc.rdb$constraint_name||'';'' FROM rdb$relation_constraints rc
join rdb$check_constraints cc
on rc.rdb$constraint_name = cc.rdb$constraint_name WHERE rc.rdb$constraint_type = ''NOT NULL''
and rc.rdb$relation_name = ''MYTABLE''
and cc.rdb$trigger_name = ''ACOLUMN''';
begin
execute STATEMENT stmt;
end;

关于sql - Firebird SQL : Subquery within an ALTER statement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6383902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com