使用DEFAULT或INTEGER值作为SQL函数的参数

vdegenne

我正在制作一个SQL函数来执行智能插入并管理多对多表(由于一个值​​是变量,触发器将不起作用)。

这是示例的最低设置:

link_foo_to_bar (foo_id int, bar_id int)
foo (id serial, name character varying)

这是我的sql函数:

CREATE FUNCTION smart_insert (bar_id integer, foo_id integer, name character varying name)
RETURNS void AS $body$
INSERT INTO foo VALUES (foo_id, name);
INSERT INTO link_foo_to_bar (CURRVAL('foo_id_seq'), bar_id);
$body$ LANGUAGE sql;

现在的问题是,foo_id是一serial所以无论它得到DEFAULTINTEGER作为传入值。该函数不接受DEFAULT关键字。我应该如何更改函数以允许使用这种不同的参数?使用文字类型?

卢卡斯·埃德(Lukas Eder)

DEFAULT在PostgreSQL中指定函数参数的方法如下:

CREATE FUNCTION smart_insert (
  name character varying,
  bar_id integer, 
  foo_id integer = -1
)
RETURNS void AS $body$
INSERT INTO foo VALUES (
  CASE foo_id WHEN -1 THEN NEXTVAL('foo_id_seq') ELSE foo_id END, 
  name
);
INSERT INTO link_foo_to_bar (
  CASE foo_id WHEN -1 THEN CURRVAL('foo_id_seq') ELSE foo_id END,
  bar_id
);
$body$ LANGUAGE sql;

您可以通过以下方式调用它:

-- with an explicit foo_id:
smart_insert('abc', 1, 2);

-- applying the default value:
smart_insert('abc', 1);

...但是,您应该考虑来自Erwin的一些有用的反馈,有关插入到serial类型中,您应该谨慎对待。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用DEFAULT或INTEGER值作为SQL函数的参数

来自分类Dev

如何使用函数及其值作为参数?

来自分类Dev

构造函数使用空值作为参数

来自分类Dev

如何使用数组值作为函数参数

来自分类Dev

SQL:使用函数作为存储过程的参数

来自分类Dev

SQL-使用列名的值作为参数

来自分类Dev

PHP函数使用准备好的SQL语句-使用爆破输入以逗号分隔的数组值作为函数的参数

来自分类Dev

PHP函数使用准备好的SQL语句-使用爆破输入以逗号分隔的数组值作为函数的参数

来自分类Dev

使用函数作为参数的函数

来自分类Dev

检查SQL表值/使用返回值作为参数

来自分类Dev

Swift:使用成员常量作为函数参数的默认值

来自分类Dev

在表值函数中使用选择查询作为参数

来自分类Dev

如何在函数中使用AngularJS值作为参数?

来自分类Dev

使用php函数的参数作为SQL查询中的列名

来自分类Dev

使用php函数的参数作为SQL查询中的列名

来自分类Dev

使用“ *”作为函数main()的参数

来自分类Dev

使用函数作为动作参数

来自分类Dev

使用函数作为参数-问题

来自分类Dev

使用HLists作为函数的参数

来自分类Dev

OpalRB:使用函数作为参数

来自分类Dev

使用函数作为参数-问题

来自分类Dev

使用NSArray作为函数参数

来自分类Dev

在传递(作为其参数的参数)函数内部使用动态值以供bind方法本身使用

来自分类Dev

使用任意函数作为模板参数参数

来自分类Dev

使用xsl参数作为XPath函数的参数

来自分类Dev

Swift:使用参数作为同一函数中不同参数的默认值

来自分类Dev

正确的值作为函数参数,正确用法?

来自分类Dev

从以const范围作为参数的函数返回的值

来自分类Dev

标量传递值到函数作为参数

Related 相关文章

  1. 1

    使用DEFAULT或INTEGER值作为SQL函数的参数

  2. 2

    如何使用函数及其值作为参数?

  3. 3

    构造函数使用空值作为参数

  4. 4

    如何使用数组值作为函数参数

  5. 5

    SQL:使用函数作为存储过程的参数

  6. 6

    SQL-使用列名的值作为参数

  7. 7

    PHP函数使用准备好的SQL语句-使用爆破输入以逗号分隔的数组值作为函数的参数

  8. 8

    PHP函数使用准备好的SQL语句-使用爆破输入以逗号分隔的数组值作为函数的参数

  9. 9

    使用函数作为参数的函数

  10. 10

    检查SQL表值/使用返回值作为参数

  11. 11

    Swift:使用成员常量作为函数参数的默认值

  12. 12

    在表值函数中使用选择查询作为参数

  13. 13

    如何在函数中使用AngularJS值作为参数?

  14. 14

    使用php函数的参数作为SQL查询中的列名

  15. 15

    使用php函数的参数作为SQL查询中的列名

  16. 16

    使用“ *”作为函数main()的参数

  17. 17

    使用函数作为动作参数

  18. 18

    使用函数作为参数-问题

  19. 19

    使用HLists作为函数的参数

  20. 20

    OpalRB:使用函数作为参数

  21. 21

    使用函数作为参数-问题

  22. 22

    使用NSArray作为函数参数

  23. 23

    在传递(作为其参数的参数)函数内部使用动态值以供bind方法本身使用

  24. 24

    使用任意函数作为模板参数参数

  25. 25

    使用xsl参数作为XPath函数的参数

  26. 26

    Swift:使用参数作为同一函数中不同参数的默认值

  27. 27

    正确的值作为函数参数,正确用法?

  28. 28

    从以const范围作为参数的函数返回的值

  29. 29

    标量传递值到函数作为参数

热门标签

归档