我正在尝试创建一个脚本,它将删除并创建我的Netezza数据库中的所有主键。类似于SQL Server的这篇文章:https://social.technet.microsoft.com/wiki/contents/articles/2321.script-to-create-or-drop-all-primary-keys.aspx
最好的方法是什么?我找到了另一种使用交叉应用的解决方案,但是像光标一样,Netezza不支持。谢谢!
干得好:
--DROP CONSTRAINTS
SELECT DISTINCT ' ALTER TABLE '||RTRIM(SCHEMA)||'.'||RELATION|| ' DROP CONSTRAINT '
|| constraintname || ' CASCADE;' from _V_RELATION_KEYDATA
--optional: WHERE DATABASE=<DATABASE>
--OR WHERE SCHEMA='<SCHEMANAME>;
--ADD PK CONSTRAINTS
SELECT DISTINCT ' ALTER TABLE '||RTRIM(SCHEMA)||'.'||RELATION|| ' ADD CONSTRAINT '
|| constraintname || ' PRIMARY KEY('|| trim(trailing ',' from replace(replace
(XMLSerialize(XMLagg(XMLElement('X',attname)))
,'<X>','')
,'</X>',',')) ||' ) INITIALLY IMMEDIATE;'
from _V_RELATION_KEYDATA
GROUP BY SCHEMA,CONSTRAINTNAME, RELATION;
--optional: WHERE DATABASE=<DATABASE>
--OR WHERE SCHEMA='<SCHEMANAME>;
确保在删除约束之前运行--ADD PK约束并保存DDL输出