J'utilise la base de données INFORMIX.Supprimer une contrainte de clé étrangère basée sur la sortie d'une instruction select complexe dans informix?
J'ai ajouté une clé forign à une table sans lui donner de nom, par ex.
ALTER TABLE myreport ADD CONSTRAINT FOREIGN KEY (rid) REFERENCES report(id), ADD CONSTRAINT FOREIGN KEY (uid) REFERENCES user(id);
Je veux laisser tomber ses principales contraintes forign sur la base de la production d'une instruction select comme suit:
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
)
);
qui renvoie une erreur
201: A syntax error has occurred.
Mais quand je exécutez-le séparément il fonctionne bien et donne les sorties suivantes comme suit:
Sélectionner:
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
)
donne:
constrname r169_278
constrname r169_279
constrname r169_280
ALTER TABLE:
ALTER TABLE cuicscheduledreports DROP CONSTRAINT (r169_278, r169_279)
Affiche un journal de succès
donc je besoin d'un ensemble de requêtes qui fera parvenir à mon exigence de manière dynamique, car il sera utilisé comme la migration pour db sur différents systèmes
Alors, quel est le problème? –