带有 if then else 构造的 SQL 触发器

标签 sql postgresql

<分区>

Thera 是 PostgreSQL 8.4 中的触发器:

 CREATE OR REPLACE FUNCTION updateMarkers()
  RETURNS trigger AS
  $$
  BEGIN
IF NEW.status='Новый' THEN
    UPDATE markers SET statusId=0;
    RETURN NEW;
ELSE IF NEW.status='В работе' THEN
    UPDATE markers SET statusId=2;
    RETURN NEW;
ELSE IF NEW.status='Завершен' THEN
    UPDATE markers SET statusId=3;
    RETURN NEW;
ESLE
    UPDATE markers SET statusId=4;
    RETURN NEW;
END IF;
END;
$$
LANGUAGE plpgsql;

ESLE 行出现语法错误。
有什么问题吗?

最佳答案

你写的是 ESLE 而不是 ELSE.... 您的新查询应该是这样的:

CREATE OR REPLACE FUNCTION updateMarkers()
  RETURNS trigger AS
  $$
  BEGIN
IF NEW.status='Новый' THEN
    UPDATE markers SET statusId=0;
    RETURN NEW;
ELSEIF NEW.status='В работе' THEN
    UPDATE markers SET statusId=2;
    RETURN NEW;
ELSEIF NEW.status='Завершен' THEN
    UPDATE markers SET statusId=3;
    RETURN NEW;
ELSE
    UPDATE markers SET statusId=4;
    RETURN NEW;
END IF;
END;
$$
LANGUAGE plpgsql;

@编辑: ELSE IF需要在一起:ELSEIF

关于带有 if then else 构造的 SQL 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208212/

相关文章:

sql - 返回在 UPDATE 中实际更改的表的行

java - 在从批处理文件调用 Java 程序时需要帮助

python - psycopg2 可以多快将大量数据写入 AWS 的 RDS 实例,并设置了 PostgreSQL?

mysql - SQL 多对多 JSON

SQL Server INSERT INTO 带 WHERE 子句

sql - SSIS - 值太大,无法放入缓冲区的列数据区

java - 在一个 JDBC 准备好的语句中插入两个不同的表

ruby-on-rails - 角色未添加到数据库中的用户

python - 如何在 Django 框架中使用用于 Java Web 应用程序的数据库?

php - 在php中选择假名查询