因此,我一直在尝试安装一个第三方软件,以及Postgres的超集CockroachDB。值得一提的是,第三个软件支持Postgres,但没有明确声明它支持CockroachDB。
在安装期间,它抱怨值类型与默认值不匹配,并查看导致错误的SQL命令(来自软件供应商)。
create table llx_adherent_type_lang
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
fk_type integer DEFAULT 0 NOT NULL,
lang varchar(5) DEFAULT 0 NOT NULL,
label varchar(255) NOT NULL,
description text,
email text,
import_key varchar(14) DEFAULT NULL
)ENGINE=innodb;对我来说,列lang的类型是varchar(5),但是缺省值设置为整数0。postgres允许这样做吗?我认为默认值必须是最大长度为5个字符的varchar类型?我试图在文档中搜索它,但我没有看到任何关于我的问题的提及。https://www.postgresql.org/docs/12/datatype-character.html。
有人知道postgres是否允许默认变量类型与定义的类型不同,还是SQL命令根本无效?谢谢。
发布于 2021-06-24 01:08:00
很容易测试:
create table default_test(fld_1 varchar(5) default 0);
\d default_test
Table "public.default_test"
Column | Type | Collation | Nullable | Default
--------+----------------------+-----------+----------+---------
fld_1 | character varying(5) | | | 0
insert into default_test values (default);
select * from default_test ;
fld_1
-------
0所以,是的,DEFAULT可以是整数。它将被强制转换为varchar。
https://stackoverflow.com/questions/68104251
复制相似问题