我有一个有关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
);
以下是查询:
cur.execute("INSERT INTO users(name, email, username, password) VALUES(%s, %s, %s, %s)", (name, email, username, password))
这是错误:
ERROR: syntax error at or near "CURRENT_TIMESTAMP"
LINE 7: register_date CURRENT_TIMESTAMP() not null
答案 0 :(得分:2)
postgresql无法识别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
);
要检查其是否有效,只需运行来自postgres REPL的下一个查询:
insert into users(name, email, username, password)
values('n', 'e@e.com', 'un', 'pwd');
答案 1 :(得分:0)
要添加具有默认当前时间戳的列,可以使用TIMESTAMP类型,默认值为NOW()
create table users (
id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar,
email varchar,
username varchar,
password varchar,
register_date TIMESTAMP DEFAULT NOW()
);
样本数据
INSERT INTO users(name, email, username, password)
VALUES('Foo', 'foo@bar.com', 'bar', 'foobar')