【问题标题】:Script to create or drop all primary keys in Netezza在 Netezza 中创建或删除所有主键的脚本
【发布时间】:2019-02-10 22:54:48
【问题描述】:

我正在尝试创建一个脚本,该脚本将删除并创建我的 Netezza 数据库中的所有主键。类似于 SQL Server 的这篇文章:https://social.technet.microsoft.com/wiki/contents/articles/2321.script-to-create-or-drop-all-primary-keys.aspx

最好的方法是什么?我找到了另一个使用交叉应用的解决方案,但就像光标一样,Netezza 不支持它。谢谢!

【问题讨论】:

  • 请问您为什么要这样做?
  • 因为我有两个具有相同表的数据库。 Netezza 有密钥,而 SQL Server 没有。我需要将主键应用到 SQL Server 数据库。

标签: sql metadata netezza information-schema


【解决方案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 输出

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多