【发布时间】:2020-02-16 00:17:57
【问题描述】:
我正在使用 Netezza 中的一个临时表,其中包含 id、gender、start_date 和 end_date 列。我正在尝试向此表添加一个新列,其中包含所有行的默认日期 2019-01-01。我要添加此列的表是本地临时表,因此 ALTER TABLE 不起作用(“错误:临时表上不允许操作”)。为了解决这个问题,我创建了一个新的临时表,其中包含一个适当命名的空列,但现在我发现我无法使用 UPDATE/SET 来填充我的日期(“错误:列的值太大”)。更改我的临时表以在其中包含包含我的日期的新列的最佳方法是什么?如果可能的话,我想直接修改旧的临时表而不是创建一个新的。注意:我在我正在使用的数据库中没有必要的管理员权限,只能创建一个永久表来 ALTER 代替。
成功创建一个空列的新临时表的代码是:
DROP TABLE new_temp_table IF EXISTS;
GO
SELECT id, gender, start_date, end_date, NULL default_date
INTO TEMP TABLE new_temp_table
FROM old_temp_table;
GO
替换新列中的NULL值不起作用的代码是:
UPDATE new_temp_table
SET default_date = '2019-01-01';
GO
【问题讨论】:
-
在新建临时表时,您是否尝试过放入日期列值呢?
SELECT id, gender, start_date, end_date, '2019-01-01' default_date -
这也有效,谢谢!您的回答引出了我在stackoverflow.com/questions/60250981/… 发布的关于 SELECT...INTO 语句的 1000 行限制的相关问题
-
嗨@KellanBaker 很高兴听到这个消息……不客气!我的建议是为此提出一个新问题。干杯!