Скрипт для создания или удаления всех первичных ключей в Netezza
Home
Вопросы и ответы
Скрипт для создания или удаления всех первичных ключей в Netezza
Я пытаюсь создать скрипт, который будет удалять и создавать все первичные ключи в моей базе данных Netezza. Что-то похожее на эту статью для SQL Server: https://social.technet.microsoft.com/wiki/contents/articles/2321.script-to-create-or-drop-all-primary-keys.aspx
Как лучше всего это сделать? Я нашел другое решение, использующее перекрестное применение, но, как и курсор, оно не поддерживается в Netezza. Спасибо!
person
Arthur
schedule
05.09.2018
source
источник
Ответы (1)
Ну вот:
--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 Constraints и сохраните выходные данные DDL, прежде чем удалять ограничения.
person
meshwerk
schedule
14.09.2018