Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Teradata中修改表的主索引_Sql_Database_Indexing_Teradata_Alter - Fatal编程技术网

Sql 在Teradata中修改表的主索引

Sql 在Teradata中修改表的主索引,sql,database,indexing,teradata,alter,Sql,Database,Indexing,Teradata,Alter,我是Teradata的新手。 我有一个大约45k条记录的表,其中有一个特定的主索引。 我想更改此表的主索引。 有人能帮忙吗 下面是我目前的主要索引 PRIMARY INDEX IDX_NON_RTL_SALES_WIDE_01 ( col1 ,Col2 ,Col3 ); 我想删除col3并向其中添加一些其他列 提前感谢除非表为空,否则不能在teradata中更改PI 您需要将数据复制到另一个表中,可以是易失性的,也可以是永久性的 然后您可以更改索引: alter table <Table

我是Teradata的新手。 我有一个大约45k条记录的表,其中有一个特定的主索引。 我想更改此表的主索引。 有人能帮忙吗

下面是我目前的主要索引

PRIMARY INDEX IDX_NON_RTL_SALES_WIDE_01 ( col1 ,Col2 ,Col3 );
我想删除col3并向其中添加一些其他列


提前感谢

除非表为空,否则不能在teradata中更改PI

您需要将数据复制到另一个表中,可以是易失性的,也可以是永久性的

然后您可以更改索引:

alter table <TableName> modify primary index Index_Name(col1, col2, ...);
altertable修改主索引名称(col1,col2,…);

一般来说,您不应该更改Teradata上的PI。我建议创建一个带有新PI的新表,并删除旧表

CREATE TABLE BLA_new
  as BLA_old
  with data
PRIMARY INDEX ( <<new PI -columns>>);
DROP TABLE BLA_old;
CREATE TABLE BLA_new
老掉牙
有数据
一级指标();
放下桌上的陈设;

Hi Andrew,如果表包含一个标识列作为主索引,该怎么办?我们无法真正重新创建该表,因为它将为标识列生成与当前值不匹配的新值。知道如何更改具有标识列的表上的UPI/PI吗?谢谢