我正在使用INFORMIX數據庫。基於informix中複雜select語句的輸出刪除外鍵約束?
我已經在表格中添加了forign鍵而沒有給它一個名字,例如
ALTER TABLE myreport ADD CONSTRAINT FOREIGN KEY (rid) REFERENCES report(id), ADD CONSTRAINT FOREIGN KEY (uid) REFERENCES user(id);
我想刪除一個select語句的輸出的基礎上,其forign主要制約因素如下:
ALTER TABLE myreport DROP CONSTRAINT (
SELECT b.constrname
FROM
systables a, sysconstraints b, sysindexes c, syscolumns d
WHERE
a.tabname = 'myreport' AND (d.colname='rid' or d.colname='uid')
AND
b.tabid = a.tabid
AND
c.idxname = b.idxname
AND
d.tabid = a.tabid
AND
(
d.colno = c.part1 or d.colno = c.part2 or d.colno = c.part3 or d.colno = c.part4 or
d.colno = c.part5 or d.colno = c.part6 or d.colno = c.part7 or d.colno = c.part8 or
d.colno = c.part9 or d.colno = c.part10 or d.colno = c.part11 or d.colno = c.part12 or
d.colno = c.part13 or d.colno = c.part14 or d.colno = c.part15 or d.colno = c.part16
)
);
會拋出一個錯誤
201: A syntax error has occurred.
但是,當我運行它分開它工作正常,並提供以下輸出如下:
選擇:
SELECT b.constrname
FROM
systables a, sysconstraints b, sysindexes c, syscolumns d
WHERE
a.tabname = 'myreport' AND (d.colname='rid' or d.colname='uid')
AND
b.tabid = a.tabid
AND
c.idxname = b.idxname
AND
d.tabid = a.tabid
AND
(
d.colno = c.part1 or d.colno = c.part2 or d.colno = c.part3 or d.colno = c.part4 or
d.colno = c.part5 or d.colno = c.part6 or d.colno = c.part7 or d.colno = c.part8 or
d.colno = c.part9 or d.colno = c.part10 or d.colno = c.part11 or d.colno = c.part12 or
d.colno = c.part13 or d.colno = c.part14 or d.colno = c.part15 or d.colno = c.part16
)
給出:
constrname r169_278
constrname r169_279
constrname r169_280
ALTER TABLE:
ALTER TABLE cuicscheduledreports DROP CONSTRAINT (r169_278, r169_279)
顯示成功日誌
所以我需要一組查詢將做到實現我的動態方式的要求,因爲這將被用來作爲遷移的數據庫不同的系統
那麼問題是什麼? –