eti*_*soy 5 postgresql identity sequence
PostgreSQL中存在smallserial,serial和bigserial数值数据类型,它们分别对 32767、2147483647 和 9223372036854775807 有明显的限制。
但是呢GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY,它有什么限制吗?或者也许它们是根据提供的数据类型(SMALLINT, INT, BIGINT)计算的?
是的,它取决于列的数据类型,并且可以使用 COLUMNS 元数据进行验证:
CREATE TABLE t1(id SMALLINT GENERATED ALWAYS AS IDENTITY);
CREATE TABLE t2(id INT GENERATED ALWAYS AS IDENTITY);
CREATE TABLE t3(id BIGINT GENERATED ALWAYS AS IDENTITY);
SELECT table_name, column_name, data_type,
is_identity, identity_minimum, identity_maximum, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME IN('t1','t2','t3');
Run Code Online (Sandbox Code Playgroud)
输出: