【发布时间】:2018-10-04 04:11:56
【问题描述】:
在 MySQL 中有一些特性,但在 postgresql 中没有。 1.创建表并赋予列默认值 2.向表中插入一个空值。 在 MySQL 中,它将插入默认值; 在 postgresql 中,它将插入 null 值; 我怎样才能让 postgresql 像 MySQL 一样做同样的事情。 我在更改 DBMS 期间发现了这个问题。我的应用程序是 java 中的代码。 ORM 是休眠 5.1.0。 我更改了 DBMS,然后很多默认列都不起作用。
MySQL sql
drop table table1;
CREATE TABLE table1
(
column_1 int PRIMARY KEY AUTO_INCREMENT,
column_2 timestamp DEFAULT current_timestamp
);
insert into table1(column_2) values(null);
select * from table1;
结果
| column_1 | column_2 |
+----------+---------------------+
| 1 | 2018-04-24 10:00:18 |
pgsql
drop table table2;
CREATE TABLE table2
(
column_1 serial PRIMARY KEY,
column_2 timestamp DEFAULT current_timestamp
);
insert into table2(column_2) values (null);
select * from table2;
结果
column_1 | column_2
----------+----------
1 |
【问题讨论】:
-
如果你真的想要这个,你可以使用触发器。就我个人而言,我宁愿说“MySQL 有一个错误功能,会让你自爆”,而不是说 PostgreSQL 缺少一个功能。如果我说“把 NULL 放在这里”,而 DBMS 没有这样做,这在我的书中是个问题。最好不要将其包含在插入中
标签: mysql postgresql hibernate