功能很简单,字段多了点,多一个参数少一个就容易出问题.
如:
too many columns.
最近看了web js优化的,js对内部变量约定为_ 开头如:_name,_age.
触发器写的比较少,临时变量不支持_myVar.可惜.
1.Compilation errors for
Error: PLS-00103: Encountered the symbol "_" when expecting one of the following:
Text: _TMP_PROJECT_ID NUMBER(16,0);
2.ORA-00947:not enough values
列名多,而插入值少.如(A,B,C)VALUES(A,B)
3.ORA-00913:too many values 怎相反
如(A,B,C)VALUES(A,B,C,D)
引用
create or replace trigger TRI_AAA
before update or delete
on AAA
for each row
declare
ERR VARCHAR2(100);
--原表字段
TMP_PROJECT_ID NUMBER(16,0);
TMP_COMPANY_ID NUMBER(16,0);
TMP_CREATE_DATETIME DATE;
...
TMP_GROUP_ID NUMBER(16,0);
--新增字段
--TMP_USER_OPT VARCHAR2(64);
--TMP_USER_OPT_DATETIME DATE;
PRAGMA AUTONOMOUS_TRANSACTION;
begin
TMP_PROJECT_ID:=:OLD.PROJECT_ID;
TMP_COMPANY_ID:=:OLD.COMPANY_ID;
TMP_CREATE_DATETIME:=:OLD.CREATE_DATETIME;
...
TMP_GROUP_ID:=:OLD.GROUP_ID;
if updating then
INSERT INTO AAA_LOG(PROJECT_ID,COMPANY_ID,CREATE_DATETIME,...,TMP_GROUP_ID,'UPDATE',SYSDATE);
commit;
elsif deleting then
INSERT INTO AAA_LOG(PROJECT_ID,COMPANY_ID,CREATE_DATETIME,...,TMP_GROUP_ID,'UPDATE',SYSDATE);
commit;
end if;
EXCEPTION
WHEN TOO_MANY_ROWS THEN
INSERT INTO TAB_PUB_ERROR (userid, error, triname, tabfountain, tabend, edate)
VALUES(0,'TOO_MANY_ROWS','TRI_AAA','AAA','AAA',sysdate);
COMMIT;
WHEN NO_DATA_FOUND THEN
INSERT INTO TAB_PUB_ERROR (userid, error, triname, tabfountain, tabend, edate)
VALUES(0,'NO_DATA_FOUND','TRI_AAA','AAA','AAA',sysdate);
COMMIT;
WHEN OTHERS THEN
err:=SUBSTR(SQLERRM(SQLCODE),1,100);
INSERT INTO TAB_PUB_ERROR (userid, error, triname, tabfountain, tabend, edate)
VALUES(0,err,'TRI_AAA','AAA','AAA',sysdate);
COMMIT;
end;
分享到:
相关推荐
在Oracle中,使用触发器进行数据备份是一种常见的方法。以下是一段示例代码,展示了如何创建一个触发器来备份新插入的数据: ```sql CREATE OR REPLACE TRIGGER tr_info AFTER INSERT ON info FOR EACH ROW BEGIN ...
本主题将深入探讨利用JDBC进行触发器创建、存储过程执行、表的构建,以及数据库的备份和恢复操作。 首先,**JDBC创建触发器** 是一种数据库级别的事件响应机制,允许在特定数据库事件(如插入、更新或删除记录)...
触发器可以帮助我们实现复杂的业务逻辑,例如在数据更改时同步其他表,或者在此例中,用于实现数据备份。本文将深入探讨如何使用SQL Server触发器来自动备份数据。 首先,我们需要创建两个数据表。`test3`是主表,...
通过编写触发器代码,可以实现在原表的数据被删除、修改或新增时,将这些信息备份到日志表中。无论是通过程序还是直接在数据库界面对表进行操作,触发器都会记录下相应的日志信息。 文章还给出了一个具体的应用实例...
具体地,实时备份方案使用双机备份方式,通过在数据库系统中部署特别设计的触发器程序,当数据发生变化时,触发器自动执行数据备份代码,同时记录数据变化前后的状态以及变化的详细信息。这样,当需要进行数据恢复时...
* 数据库的数据备份和恢复,例如在备份和恢复过程中执行触发器。 Oracle 触发器是一种强大的数据库控制机制,能够实现数据的一致性、正确性和规范性控制。同时,触发器也可以减少数据的重复和不一致,提高数据的...
"触发器数据同步"这个主题涉及到如何通过触发器来确保数据库中的数据一致性与同步性。当多用户同时访问数据库并进行操作时,数据同步至关重要,以防止数据冲突和不一致。触发器可以在后台默默地执行一系列操作,比如...
例如,创建一个Update触发器,用于在更新`sales`表时,将删除的行备份到`sales_delbak`,新插入的行备份到`sales_insbak`。创建触发器的SQL语句如下: ```sql CREATE TRIGGER trig_test ON mrdb.dbo.[sales] FOR ...
- 在本案例中,使用TRUNCATE TABLE `employeebackup`可以快速清空备份表,释放内存,确保数据的彻底清除。 5. **PHP后台处理**: - PHP作为后端语言,通过Yii2框架的控制器方法(如`actionEmployeedel`)来处理...
使用触发器来维护参照完整性,即在数据发生变化时自动更新或删除相关数据以保持参照一致性。例如,当删除 `order_detail` 表中的一条记录时,可以通过触发器来更新 `product` 表中的库存: ```sql DELIMITER // ...
当用户对 `Library` 表进行更新操作时,触发器将被自动触发,如果更新了 `LibraryNo` 列,触发器将抛出错误,取消更新操作。 2. 触发器的应用场景 触发器可以应用于各种场景,例如: * 强制业务规则:例如,禁止...
"触发器设计实验报告" 本实验的目的是设计触发器,了解触发器的概念和应用。触发器是一种特殊的存储过程,它被分配给某个特定的表,...同时,可以使用触发器来实现数据库的自动化操作,例如数据备份、数据分析等。
触发器可以被用来实现数据的验证、数据的审核、数据的备份和恢复等等。在数据库设计中,触发器可以用来确保数据的正确性和一致性。 4. 存储过程(Stored Procedure) 存储过程是数据库中的一种预编译的程序,能够...
当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或DELETE。触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。 触发器的...
2、备份表结构和数据,还备份索引、序列、触发器等对象,提高了备份速度。但需要手动备份原始表的序列。 3、备份策略是存储过程,方便执行,每次备份表都有时间戳。 4、若备份文件过大,可以考虑增加备份频率或分批...
【定时备份】跟【增量备份】定时备份按照设定的时间点进行周期性备份,增量备份就厉害了,监听数据库表Row的变动进行备份,只对表定期做select count 处理,不进行其它触发器监听,不影响表的正常使用! 有了这个...
- DELETE触发器:在删除记录时激活,可以用于跟踪数据变化,防止数据丢失,或者在其他表中进行相应的删除操作。 2. DDL触发器: - 这类触发器主要用于监控对数据库结构的改变,例如创建新的表、视图、索引、用户...