批量将数据插入到具有默认当前时间戳列的表中

时间:2016-11-16 06:48:22

标签: sql amazon-web-services amazon-redshift

我有一张关于红移的表格,其中包含以下结构

CREATE TABLE schemaName.tableName (
some_id INTEGER,
current_time TIMESTAMP DEFAULT GETDATE()
);

如果我从其他表中批量插入数据,例如

INSERT INTO schemaName.tableName (some_id) SELECT id FROM otherSchema.otherTable;

对于所有批量插入的行,current_time列的值是否相同?或者它取决于每条记录的插入时间。由于列数据类型为TIMESTAMP

我只考虑使用Amazon Redshift。

到目前为止,我已经测试过将current_time列的默认值更改为SYSDATE并将10行批量插入目标表。每行current_time列值会产生2016-11-16 06:38:52.339208之类的结果,并且每行都相同,其中GETDATE()会产生2016-11-16 06:43:56之类的结果。我没有找到任何有关此问题的文件,需要对此进行确认。

确切地说,在执行以下语句

之后,所有行都获得相同的时间戳值
INSERT INTO schemaName.tableName (some_id) SELECT id FROM otherSchema.otherTable;

但是,如果我将表格结构更改为以下

  CREATE TABLE schemaName.tableName (
  some_id INTEGER,
  current_time DOUBLE PRECISION DEFAULT RANDOM()
  );

行为current_time

获取不同的随机值

1 个答案:

答案 0 :(得分:-1)

是。在批量插入的情况下,Redshift将具有相同的默认值。 RedshiftDocumentation具有以下内容:

  

给定列的已评估DEFAULT表达式是相同的   所有已加载的行,一个使用RANDOM()函数的DEFAULT表达式   将为所有行分配相同的值。

相关问题