是否可以INSERT从SELECT语句DEFAULT中将值放入 PostgreSQL 表并使用空列的值?
就我而言,该SELECT语句是从 JSON 中选择的。
在下面的尝试中,我通过显式检索序列取得了成功,但我希望有一种方法可以使用 DEFAULT 值进行 INSERT。或者选择 DEFAULT 值而不必显式调用默认函数。
-- Example table
create table animals
(
id serial,
nm character varying (30) NOT NULL, --name
typ character varying(10),
tvi integer,
tvf numeric(8,3)
);
insert into animals VALUES (DEFAULT,'mouse','m',4,12.45);
select row_to_json(a) from animals a;
select * from json_populate_record(null::animals,'{"id":null,"nm":"mouse","typ":"m","tvi":4,"tvf":12.450}');
--All good.
-- Attempt #1
INSERT INTO animals
select id ,nm,typ,tvi,tvf from json_populate_record(null::animals,'{"id":null,"nm":"mouse","typ":"m","tvi":4,"tvf":12.450}');
/*
ERROR: null value in column "id" violates not-null …Run Code Online (Sandbox Code Playgroud) 我想知道斜线|/在做什么,
SET equal_area_radius = |/area/pi();
Run Code Online (Sandbox Code Playgroud)
该语句有效,它肯定会更改值:
SELECT |/125.555/pi(); -- returns: 6.32181918120139
SELECT 125.555/pi(); -- returns: 39.9653977598058
Run Code Online (Sandbox Code Playgroud)
斜线运算符有|/什么作用?