You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Teradata同大版本下Identity列行为为何不同?脚本执行结果不一致

Teradata同大版本下IDENTITY列建表行为差异原因及解决方法

核心原因:系统默认配置差异,而非版本变更

同属Teradata 17.20大版本,两个环境的行为差异不是版本功能变更导致的,而是数据库默认Primary Index(PI)配置不同。

具体细节说明

  • Teradata的DefaultPI配置参数决定了当建表语句未显式指定Primary Index时的行为:
    • 当DefaultPI=ON(Teradata Express默认配置):系统会自动将表中第一个NOT NULL的整数类型列(即你的脚本里的TestIDIDENTITY列)设为Primary Index,因此表不是NoPI表,IDENTITY列可以正常生效。
    • 当DefaultPI=OFF(托管版ClearSpace的配置):建表时如果未显式指定PI,表会被创建为NoPI表。而Teradata明确禁止在NoPI表中使用IDENTITY列,因此触发报错:Syntax error: Identity Column in a NoPI table is unsupported.

解决方法

最稳妥的方式是显式指定Primary Index,避免依赖环境默认配置,修改后的脚本如下:

CREATE MULTISET TABLE "test" 
(
"TestID" BIGINT GENERATED ALWAYS AS IDENTITY 
    (START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647  NO CYCLE) NOT NULL,
"Version" VARCHAR (30)
) PRIMARY INDEX("TestID");

如果需要保留环境默认行为,也可联系托管服务商调整DefaultPI参数为ON,但显式指定PI的写法更具可移植性,适合跨环境使用。


内容的提问来源于stack exchange,提问作者Yndigo Dream

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:35:57