Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
PostgreSQL返回错误时的简单更新触发器_Sql_Postgresql_Triggers - Fatal编程技术网

PostgreSQL返回错误时的简单更新触发器

PostgreSQL返回错误时的简单更新触发器,sql,postgresql,triggers,Sql,Postgresql,Triggers,它说我没有使用所选属性,我应该使用Perform而不是Select。但是在执行之后,它无法识别IF。我对这些语法非常陌生,所以它可能是错误的。我想我想做的很清楚(我相信对于有经验的人来说这很简单)。您能帮我解决这个问题吗?在标准SQL(和PostgreSQL)中,这是一个带引号的标识符(表名、列名等): 这是一个字符串文字: "Alive" 您将收到关于“未知列”的投诉,因为您对字符串使用了错误的引号 通常使用定义函数来避免此类情况: 'Alive' 要表示行的上一个/当前状态和新的/更新的

它说我没有使用所选属性,我应该使用Perform而不是Select。但是在执行之后,它无法识别IF。我对这些语法非常陌生,所以它可能是错误的。我想我想做的很清楚(我相信对于有经验的人来说这很简单)。您能帮我解决这个问题吗?

在标准SQL(和PostgreSQL)中,这是一个带引号的标识符(表名、列名等):

这是一个字符串文字:

"Alive"
您将收到关于“未知列”的投诉,因为您对字符串使用了错误的引号

通常使用定义函数来避免此类情况:

'Alive'
要表示行的上一个/当前状态和新的/更新的状态,您应该参考这些状态,而不是试图选择以查找状态:

CREATE FUNCTION update_status() RETURNS TRIGGER AS $$
BEGIN 
    SELECT status FROM animals
    IF status = 'Alive' THEN 
        UPDATE animals SET status = 'Sold' WHERE status = 'Alive';   
    END IF;   
    RETURN NULL; 
END;
$$ LANGUAGE plpgsql;
对于该更新,您可能还需要在WHERE子句中添加更多内容,只是
WHERE status='Alive'
似乎有点宽泛。

在标准SQL(和PostgreSQL)中,这是一个带引号的标识符(表名、列名等):

这是一个字符串文字:

"Alive"
您将收到关于“未知列”的投诉,因为您对字符串使用了错误的引号

通常使用定义函数来避免此类情况:

'Alive'
要表示行的上一个/当前状态和新的/更新的状态,您应该参考这些状态,而不是试图选择以查找状态:

CREATE FUNCTION update_status() RETURNS TRIGGER AS $$
BEGIN 
    SELECT status FROM animals
    IF status = 'Alive' THEN 
        UPDATE animals SET status = 'Sold' WHERE status = 'Alive';   
    END IF;   
    RETURN NULL; 
END;
$$ LANGUAGE plpgsql;

对于该更新,您可能还需要在WHERE子句中增加一点内容,只是
WHERE status='Alive'
似乎有点宽泛。

忘记说它正确创建了触发器,问题是我更新id\u selling变量时。忘了说它正确创建了触发器,问题是当我更新id_selling变量时。我最近编译了一个列表,其中的标识符使用分隔符。这对我帮助很大,TYVM!:)我最近编译了一个列表,其中的标识符使用了分隔符。这对我帮助很大,TYVM!:)