数据库插入触发器 sql->oracle
2016-06-22 16:24
232 查看
sql 脚本
alter trigger tri
on HR_PunchRecord
instead of insert
as
declare @FRegNo varchar(20)
declare @FEmpCode varchar(20)
declare @FPunchID varchar(20)
declare @FVerifyMode varchar(20)
declare @FDate varchar(20)
declare @FTime varchar(20)
declare @FPhoto varchar(20)
select @FRegNo=FRegNo,@FEmpCode=FEmpCode ,@FPunchID=FPunchID ,@FVerifyMode=FVerifyMode ,@FDate=FDate ,@FTime=FTime ,@FPhoto=FPhoto from inserted
if exists (select 1 from HR_PunchRecord where FRegNo=@FRegNo and FPunchID=@FPunchID and FDate=@FDate and FTime=@FTime)
begin
--print'存在'
rollback transaction
end
else
begin
insert into HR_PunchRecord ( HR_PunchRecord.FRegNo,HR_PunchRecord.FEmpCode,HR_PunchRecord.FPunchID,
HR_PunchRecord.FVerifyMode,HR_PunchRecord.FDate, HR_PunchRecord.FTime,
HR_PunchRecord.FPhoto, HR_PunchRecord.FIsNew)
values
(@FRegNo,@FEmpCode,@FPunchID,@FVerifyMode,@FDate,@FTime,@FPhoto,1)
end
oracle
CREATE OR REPLACE TRIGGER TriggerInsertOrUpdate2
BEFORE INSERT ON HR_PUNCHRECORD
FOR EACH ROW
DECLARE
vCount NUMBER(1);
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
SELECT COUNT(1) INTO vCount FROM HR_PUNCHRECORD WHERE FREGNO = :NEW.FREGNO and FPUNCHID = :NEW.FPUNCHID and FDATE = :NEW.FDATE and FTIME = :NEW.FTIME;
--DBMS_OUTPUT.PUT_LINE(vCount);
IF vCount = 1 THEN
DELETE FROM HR_PUNCHRECORD WHERE FREGNO = :New.FREGNO and FPUNCHID = :NEW.FPUNCHID and FDATE = :NEW.FDATE and FTIME = :NEW.FTIME;
END IF;
commit;
END TriggerInsertOrUpdate2;
参考 :http://blog.sina.com.cn/s/blog_7cc3b8db010113oj.html
alter trigger tri
on HR_PunchRecord
instead of insert
as
declare @FRegNo varchar(20)
declare @FEmpCode varchar(20)
declare @FPunchID varchar(20)
declare @FVerifyMode varchar(20)
declare @FDate varchar(20)
declare @FTime varchar(20)
declare @FPhoto varchar(20)
select @FRegNo=FRegNo,@FEmpCode=FEmpCode ,@FPunchID=FPunchID ,@FVerifyMode=FVerifyMode ,@FDate=FDate ,@FTime=FTime ,@FPhoto=FPhoto from inserted
if exists (select 1 from HR_PunchRecord where FRegNo=@FRegNo and FPunchID=@FPunchID and FDate=@FDate and FTime=@FTime)
begin
--print'存在'
rollback transaction
end
else
begin
insert into HR_PunchRecord ( HR_PunchRecord.FRegNo,HR_PunchRecord.FEmpCode,HR_PunchRecord.FPunchID,
HR_PunchRecord.FVerifyMode,HR_PunchRecord.FDate, HR_PunchRecord.FTime,
HR_PunchRecord.FPhoto, HR_PunchRecord.FIsNew)
values
(@FRegNo,@FEmpCode,@FPunchID,@FVerifyMode,@FDate,@FTime,@FPhoto,1)
end
oracle
CREATE OR REPLACE TRIGGER TriggerInsertOrUpdate2
BEFORE INSERT ON HR_PUNCHRECORD
FOR EACH ROW
DECLARE
vCount NUMBER(1);
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
SELECT COUNT(1) INTO vCount FROM HR_PUNCHRECORD WHERE FREGNO = :NEW.FREGNO and FPUNCHID = :NEW.FPUNCHID and FDATE = :NEW.FDATE and FTIME = :NEW.FTIME;
--DBMS_OUTPUT.PUT_LINE(vCount);
IF vCount = 1 THEN
DELETE FROM HR_PUNCHRECORD WHERE FREGNO = :New.FREGNO and FPUNCHID = :NEW.FPUNCHID and FDATE = :NEW.FDATE and FTIME = :NEW.FTIME;
END IF;
commit;
END TriggerInsertOrUpdate2;
参考 :http://blog.sina.com.cn/s/blog_7cc3b8db010113oj.html
相关文章推荐
- Oracle 11gR2 ASM备份/恢复metadata示例
- Oracle 11gR1/R2 PSU安装参考
- Linux 下Oracle 数据文件被物理误删除的恢复
- 常见Oracle错误之ORA-01102错误
- Oracle 12c Study之--Installer Oracle
- Oracle 12c Study之--Installer Oracle
- oracle sql jpa
- Oracle Logminer数据库日志分析详解
- oracle限制用户连接数
- Oracle行转列
- Oracle 和 SqlServer 的区别
- 几种不同oracle数据库启动方式的对比,及启动状态的切换、查询
- oracle数据库system密码忘记怎么办?
- 本地plsqldev.exe连接远端oracle数据库
- oracle事务和锁(转)
- Oracle 用户,授权,管理(转载)
- Oracle 开启归档日志以及关闭归档日志
- ORACLE数据库日常维护知识点总结
- oracle审计
- Oracle中实现find_in_set