- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 SQL/PostgreSQL 比较陌生,我们才刚刚开始使用触发器和函数/过程。
这是两个相关的表
CREATE TABLE Planes (
regnr TEXT PRIMARY KEY,
capacity INT NOT NULL
);
CREATE TABLE AvailableFlights (
date TEXT PRIMARY KEY,
price INT NOT NULL,
nbrOfFreeSeats INT NOT NULL,
flight TEXT NOT NULL REFERENCES Flights(code),
plane TEXT NOT NULL REFERENCES Planes(regnr)
);
“航类”表包含有关到达等的更多信息。不管怎样,现在我有了这样的功能:
CREATE OR REPLACE FUNCTION update_plane() RETURNS TRIGGER AS $$
DECLARE
size_difference INTEGER;
BEGIN
size_difference := (SELECT capacity FROM Planes WHERE regnr = new.plane) - (SELECT capacity FROM Planes WHERE regnr = old.plane);
IF(NEW.numberOfFreeSeats + size_difference < 0) THEN
RAISE EXCEPTION 'Plane too small';
ELSE NEW.numberOfFreeSeats := NEW.numberOfFreeSeats + size_difference;
END IF;
RETURN NEW;
END
$$ LANGUAGE 'plpgsql';
还有一个触发器:
CREATE TRIGGER UpdatePlane BEFORE UPDATE ON AvailableFlights
FOR EACH ROW
WHEN (NEW.plane <> OLD.plane)
EXECUTE PROCEDURE update_plane();
所以我的问题是:如何在不使用 FROM 和 WHERE 条件的 SELECT 的情况下简单地编写 NEW.nbrOfFreeSeats?它如何知道相应地更改哪一行?因为触发器只会在我写类似“UPDATE table SET plane = 'newVal' WHERE plane = 'oldVal'”时触发,所以在我看来我从来没有说明我想改变哪个nbrSeats。或者它暗示从哪个我要改乘的飞机?(澄清一下:它工作正常,我只是想知道为什么)。
我希望我说得有道理,这是我在 stackoverflow 上的第一篇文章,所以我希望我在发布这篇文章时没有犯太多错误(尽管欢迎任何反馈,有点仓促发布):)提前致谢。
最佳答案
NEW
Data type RECORD; variable holding the new database row forINSERT/UPDATE operations in row-level triggers.
还有
Row-level triggers fired BEFORE [...] Returning a row value different from the original value of NEW alters the row that will be inserted or updated.
该页面中的示例“示例 39-3。PL/pgSQL 触发器过程”也可能有帮助。
关于sql - 对SQL函数中的 "NEW"关键字感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42280471/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!