在 PostgreSQL 上触发
Trigger on PostgreSQL
我需要一些帮助。我是 SQL 的新手,当我在 Peop
table 中使用带有 sex = 'F'
的 INSERT 时,我想要的只是更新列 (est
) 的触发器.可能吗?
我的数据库管理系统是 PostgreSQL.
我试过这段代码,但不正确。我得到这个提示:如果你想丢弃 SELECT 的结果,请改用 PERFORM。
CREATE FUNCTION tEst() RETURNS TRIGGER AS $$
BEGIN
SELECT * FROM Peop;
IF Peop.est = 'A' AND Peop.sex = 'F' THEN
UPDATE Peop SET est = 'B';
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER myTrigger AFTER INSERT ON Peop
FOR EACH ROW
EXECUTE PROCEDURE tEst();
INSERT INTO Peop (name, sex) VALUES ('Mary', 'F');
默认情况下,est
列有 'A'
值。
提前致谢!
这是个简单的任务,但您应该使用 BEFORE INSERT OR UPDATE
行触发器。有可能
- 获取有关(插入、更新、删除)行中数据的信息。
- 修改数据,将存储在table.
你的例子:
CREATE FUNCTION tEst() RETURNS TRIGGER AS $$
BEGIN
IF NEW.est = 'A' AND NEW.sex = 'F' THEN
NEW.est = 'B';
END IF;
RETURN NEW;
END;
CREATE TRIGGER tEst_trg BEFORE INSERT OR UPDATE ON peop
FOR EACH ROW EXECUTE PROCEDURE tEst();
中查看更多示例
我需要一些帮助。我是 SQL 的新手,当我在 Peop
table 中使用带有 sex = 'F'
的 INSERT 时,我想要的只是更新列 (est
) 的触发器.可能吗?
我的数据库管理系统是 PostgreSQL.
我试过这段代码,但不正确。我得到这个提示:如果你想丢弃 SELECT 的结果,请改用 PERFORM。
CREATE FUNCTION tEst() RETURNS TRIGGER AS $$
BEGIN
SELECT * FROM Peop;
IF Peop.est = 'A' AND Peop.sex = 'F' THEN
UPDATE Peop SET est = 'B';
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER myTrigger AFTER INSERT ON Peop
FOR EACH ROW
EXECUTE PROCEDURE tEst();
INSERT INTO Peop (name, sex) VALUES ('Mary', 'F');
默认情况下,est
列有 'A'
值。
提前致谢!
这是个简单的任务,但您应该使用 BEFORE INSERT OR UPDATE
行触发器。有可能
- 获取有关(插入、更新、删除)行中数据的信息。
- 修改数据,将存储在table.
你的例子:
CREATE FUNCTION tEst() RETURNS TRIGGER AS $$
BEGIN
IF NEW.est = 'A' AND NEW.sex = 'F' THEN
NEW.est = 'B';
END IF;
RETURN NEW;
END;
CREATE TRIGGER tEst_trg BEFORE INSERT OR UPDATE ON peop
FOR EACH ROW EXECUTE PROCEDURE tEst();
中查看更多示例