Netezza 外键约束

Posted

技术标签:

【中文标题】Netezza 外键约束【英文标题】:Netezza foreign key constraint 【发布时间】:2014-02-11 14:48:12 【问题描述】:

虽然 Netezza 有外键的概念,但为什么不“强制”外键约束?不强制执行约束有什么好处?

【问题讨论】:

【参考方案1】:

Foreign Keys 仍被查询优化器用于帮助构建最有效的查询计划,同时估计查询成本。使用Foreign / Primary Keys 来利用包括Microsoft Visio 在内的许多数据库可视化工具也很重要。不强制执行约束的好处是速度。 Netezza 能够通过不维护此功能来挤压额外的性能。

Netezza Manual

【讨论】:

【参考方案2】:

测试 Netezza SQL:FOREIGN KEY 子句

------------------------------------------------------------------
/*
NOTICE:  foreign key constraints not enforced       <-- Netezza SQL Parser complains here
 */
/* Start time 4/25/2013 6:21:32 PM, end time 4/25/2013 6:21:32 PM. */
/* Duration 0.078125 sec. */
CREATE TABLE table2ref
(
        col1    smallint NOT NULL
       ,colref2 smallint
       ,col3      varchar(30 )
  ,CONSTRAINT fk_column_colref2                                      <-- THIS IS REF CONSTRAINT
   FOREIGN KEY (colref2) 
   REFERENCES test2delete (col1)                     <-- the ref table must already be created 
);

/* Start time 4/25/2013 6:21:32 PM, end time 4/25/2013 6:21:37 PM. */
/* Duration 4.53125 sec. */                         <-- Observe how long the INSERT takes
/* Records Affected: 1. */

insert into table2ref values (3,12345,'reftabstring'); <-- THIS IS NON-EXISTING KEY "12345"

/* Start time 4/25/2013 6:21:37 PM, end time 4/25/2013 6:21:39 PM. */
/* Duration 2.65625 sec. */                         <-- Observe how long the INSERT takes
/* Records Affected: 1. */

insert into table2ref values (3,12345,'reftabstring');

【讨论】:

以上是关于Netezza 外键约束的主要内容,如果未能解决你的问题,请参考以下文章

SQLSERVER外键约束

主键约束,外键约束,空值约束,默认值约束,唯一约束,检查约束的各个作用是啥?

怎么添加外键约束

Oracle定义约束外键约束

数据库外键约束?

高级c#中三层架构中存在外键约束怎么删除