标签: database-trigger

PostgreSQL 相当于从 Oracle 插入的内容是什么?

我想创建一个触发器来捕获INSERTUPDATE根据操作执行某些操作。在 Oracle 中可以这样做:

CREATE OR REPLACE TRIGGER ABC_BIU BEFORE INSERT OR UPDATE ON ABC
FOR EACH ROW
BEGIN
  IF INSERTING THEN
    ...
  END IF;

 ...
END;
Run Code Online (Sandbox Code Playgroud)

这里提到that是Oracle中INSERTING与the结合使用的一个关键字,在这里你可以看到用法:TRIGGER

IF INSERTING THEN ... END IF;
IF UPDATING THEN ... END IF;
Run Code Online (Sandbox Code Playgroud)

oracle postgresql triggers plpgsql database-trigger

0
推荐指数
1
解决办法
1368
查看次数

如果删除的行具有未超过一年的datefin字段,我创建了一个触发器来引发错误

这是我的代码:

create or replace trigger tr_interdit
before delete on reservation
for each row
DECLARE
    V_res_date RESERVATION.DATEFIN%type;
begin
    SELECT DATEFIN into V_res_date
    FROM reservation
    where DATEFIN = :old.DATEFIN;

    if V_res_date<add_months(V_res_date,-12)
        then RAISE_APPLICATION_ERROR(-20001, 'Date fin na pas depasse un ans');
    end if;

end tr_interdit;
/
Run Code Online (Sandbox Code Playgroud)

但是当我删除一行后,即使它不应该被删除,我也会收到这个错误.

这是错误:

删除"DANIEL"."保留",其中ROWID ='AAAFCvAABAAALHhAAA'和ORA_ROWSCN ='3392006'和("NUMR"为空或"NUMR"不为空)ORA-04091:表DANIEL.RESERVATION正在变异,触发/功能可能看不到它ORA-06512:在"DANIEL.TR_INTERDIT",第4行ORA-04088:执行触发器'DANIEL.TR_INTERDIT'时出错

oracle plsql database-trigger

0
推荐指数
1
解决办法
38
查看次数

排除某些词的触发器

我有一个与 T-SQL 中的数据库触发器相关的问题。

我想创建一个只允许特定词(可用,不可用)列的触发器avalability

怎么做?

我明白触发器是什么,但在命令序列中迷失了 - 什么应该在什么之后。

sql t-sql sql-server check-constraints database-trigger

0
推荐指数
2
解决办法
98
查看次数

SQL 防止从表中选择

有没有办法防止从表中选择,比如在 9 到 5 之间允许选择,否则不返回任何内容?

触发器用于 DML、DDL、数据库操作。

用程序来做,并检查时间/其他条件是否正确?

或者有没有更简单的方法来防止选择?

sql oracle database-trigger

0
推荐指数
1
解决办法
48
查看次数

在 SQL Server 上创建 DDL 触发器需要哪些权限?

在特定数据库 (MS SQL Server) 上创建 DDL 触发器需要哪些权限?

sql-server permissions ddl database-trigger

-1
推荐指数
1
解决办法
2895
查看次数