PostgresQL:使用键值而不是两个列表插入
PostgresQL允许您插入两个列表,一个是字段名,另一个是值PostgresQL:使用键值而不是两个列表插入,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,PostgresQL允许您插入两个列表,一个是字段名,另一个是值 INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99); 对于长列表,很难确定您在哪个列表索引上。有没有办法通过在值旁边指定列名(即键值对)来插入?注意:这与存储不同 即 常规DML是不可能的 作为替代方案: 使用值列表缩短DML: INSERT INTO products (product_no, name, price) VALUES
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);
对于长列表,很难确定您在哪个列表索引上。有没有办法通过在值旁边指定列名(即键值对)来插入?注意:这与存储不同
即
常规DML是不可能的 作为替代方案: 使用值列表缩短DML:
INSERT INTO products (product_no, name, price) VALUES
(1, 'Cheese', 9.99),
(2, 'Sausages', 9.99),
...;
或创建可通过参数指定执行的函数:
create or replace function insert_product(
in product_no products.product_no%type,
in name products.name%type,
in price products.price%type) returns products.product_no%type as $$
insert into products(product_no, name, price) values (product_no, name, price) returning product_no;
$$ language sql;
select insert_product(1, 'Mashrooms', 1.99); -- Parameters by order
select insert_product(product_no := 2, name := 'Cheese', price := 9.99); -- Parameters by name
select insert_product(product_no := 3, price := 19.99, name := 'Sosages'); -- Order does mot matter
create or replace function insert_product(
in product_no products.product_no%type,
in name products.name%type,
in price products.price%type) returns products.product_no%type as $$
insert into products(product_no, name, price) values (product_no, name, price) returning product_no;
$$ language sql;
select insert_product(1, 'Mashrooms', 1.99); -- Parameters by order
select insert_product(product_no := 2, name := 'Cheese', price := 9.99); -- Parameters by name
select insert_product(product_no := 3, price := 19.99, name := 'Sosages'); -- Order does mot matter