PostgreSQL 中不存在 current_timestamp?

Ali*_*ine 3 postgresql

我有一个关于 Heroku 的数据库。字段会自动填充日期。我尝试使用current_timestamp,但似乎不起作用。

这是数据库的架构。

drop table if exists users;
create table users (
  id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name varchar,
  email varchar,
  username varchar,
  password varchar,
  register_date CURRENT_TIMESTAMP() not null
);
Run Code Online (Sandbox Code Playgroud)

这是查询:

cur.execute("INSERT INTO users(name, email, username, password) VALUES(%s, %s, %s, %s)", (name, email, username, password))
Run Code Online (Sandbox Code Playgroud)

这是错误:

ERROR:  syntax error at or near "CURRENT_TIMESTAMP"
LINE 7:   register_date CURRENT_TIMESTAMP() not null
Run Code Online (Sandbox Code Playgroud)

Vla*_*pak 6

无法识别CURRENT_TIMESTAMP()这就是为什么你必须使用CURRENT_TIMESTAMP(不带括号)。接下来创建表查询一定适合您:

create table users (
  id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name varchar,
  email varchar,
  username varchar,
  password varchar,
  register_date timestamp default CURRENT_TIMESTAMP not null
);
Run Code Online (Sandbox Code Playgroud)

要检查它是否有效,只需从 postgres REPL 运行下一个查询:

insert into users(name, email, username, password)
values('n', 'e@e.com', 'un', 'pwd');
Run Code Online (Sandbox Code Playgroud)