Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何检查序列是否高于某个数字,如果不在Postgres中更改它_Sql_Postgresql_If Statement_Syntax Error_Sequence - Fatal编程技术网

Sql 如何检查序列是否高于某个数字,如果不在Postgres中更改它

Sql 如何检查序列是否高于某个数字,如果不在Postgres中更改它,sql,postgresql,if-statement,syntax-error,sequence,Sql,Postgresql,If Statement,Syntax Error,Sequence,我有一个问题,我的SQL序列必须高于某个数字才能修复唯一的约束错误。现在我开始写一个if语句来检查某个数字,如果它在下面,它应该增加到某个数字。该声明适用于博士后 我得到了独立的部分运行,但连接如果是抛出一个错误,我不知道为什么 首先选择当前号码: SELECT nextval('mySequence') 然后更新号码: SELECT setval('mySequence', targetNumber, true) 在我的示例中,完整的语句如下所示: IF (SELECT nextval('

我有一个问题,我的SQL序列必须高于某个数字才能修复唯一的约束错误。现在我开始写一个if语句来检查某个数字,如果它在下面,它应该增加到某个数字。该声明适用于博士后

我得到了独立的部分运行,但连接如果是抛出一个错误,我不知道为什么

首先选择当前号码:

SELECT nextval('mySequence')
然后更新号码:

SELECT setval('mySequence', targetNumber, true)
在我的示例中,完整的语句如下所示:

IF (SELECT nextval('mySequence') < targetNumber)
THEN (SELECT setval('mySequence', targetNumber, true))
END IF;
有人能解释一下我做错了什么,因为错误信息没有给我太多的工作机会吗?非常感谢您的帮助。

试试以下方法:


如果要使用if语句,可以使用postgres函数。 您可以尝试以下方法:

创建序列序列\测试\ id \序列; 创建表seq_测试 id整数不为空默认下一步'seq_test_id_seq', 名称VARCHAR ; 创建或替换功能序列\测试\功能目标\编号bigint 返回无效 语言“plpgsql” 不稳定的 平行不安全 100美元 作为$BODY$ 声明 seq_val整数; 开始 选择下一个'seq_test_id_seq'进入seq_val; 提出通知“下一个序列[%]”,序号; 如果seq_val<目标编号,则 选择setval'seq_test_id_seq',target_number,true为seq_val; 提出通知“序列值已修改[%]”,序号; 如果结束; 终止 $BODY$; 然后调用以下过程:

选择顺序测试功能10;
SQL是一种查询语言,不支持像IF这样的过程构造。是否正在查找:?如果这只适用于单个表:选择setval'mysequence',从_表中选择maxid我是否可以使用其他方法来重新创建某种机制,例如if语句读取case-then和一些使之成为可能的东西?您不需要所有这些。您可以在不使用任何程序代码、大小写表达式或类似内容的情况下同步序列。从_表中选择setval'mysequence',maxid;
ERROR:  syntax error at »IF«
   SELECT setval('mySequence', targetNumber, true) 
    WHERE (SELECT nextval('mySequence') < targetNumber) is true;