社区
基础和管理
帖子详情
触发器 能否更新某个字段
gisinfo
2009-09-27 03:30:33
我应用中有两个字段有对应关系
dxlb sfjr
31 是
32 否
现在:
当update insert dxlb
时sfjr中 是 否
是我触发写入的
但是 这导致我 修改sfjr 保存不进去
是否能根据表中的某个字段进行触发呢?
或者有什么更高明的方法望赐教!!
...全文
209
6
打赏
收藏
触发器 能否更新某个字段
我应用中有两个字段有对应关系 dxlb sfjr 31 是 32 否 现在: 当update insert dxlb 时sfjr中 是 否 是我触发写入的 但是 这导致我 修改sfjr 保存不进去 是否能根据表中的某个字段进行触发呢? 或者有什么更高明的方法望赐教!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cheng_fengming
2009-10-07
打赏
举报
回复
楼主用哪个版本的oracle ?
我记得oracle 9i一下的(包括9i)不能修改列名吧?
别到时候瞎忙乎 呵呵
plafang
2009-10-06
打赏
举报
回复
支持三楼的
iqlife
2009-09-30
打赏
举报
回复
在行级触发器中可以对列的值进行访问(很重要!)
列名前加 :old. 表示变化前的值
列名前加 :new. 表示变化后的值
在when子句中不用冒号。
inthirties
2009-09-27
打赏
举报
回复
[Quote=引用楼主 gisinfo 的回复:]
我应用中有两个字段有对应关系
dxlb sfjr
31 是
32 否
现在:
当update insert dxlb
时sfjr中 是 否
是我触发写入的
但是 这导致我 修改sfjr 保存不进去
是否能根据表中的某个字段进行触发呢?
或者有什么更高明的方法望赐教!!
[/Quote]
trigger只有表级和行级的,没有字段级别的
但是行级trigger的强大功能,足可个满足你的需求,
你建立before的trigger,这样就可以通过new和old的判断来实现你的功能,
如果要修改值,只需要用:new.fieldname=xxxx的方式赋值就可以了,
同时可以用:old.fieldname=XXXX来进行你的逻辑判断。
zcs_1
2009-09-27
打赏
举报
回复
用BEFORE UPDATE ON TABLE试试。
小灰狼W
2009-09-27
打赏
举报
回复
create or replace trigger trgname
before insert or update of colname
on tabname
for each row
begin
if inserting then
if ... then :new.colname='xxx';
end if;
end if;
if upd....
end trgname;
用行级before触发器
直接对:new.sfjr值进行修改
SQL Server
触发器
表的特定
字段
更新
时,触发Update
触发器
代码如下: create trigger TR_MasterTable_Update on MasterTable after update as if update ([Type])–当Type
字段
被
更新
时,才会触发此
触发器
insert into MasterLogTable select Id ,(Case [Type] when 1 then ‘Type1’ when 2 then ‘Type2’ when 3 then ‘Type3’ when 4 then ‘Type4’ else ‘TypeDefault’ end) ,Name from inserted go 另外再补充一句
触发器
练习答案(附有测试文档)
1、当向SC表插入数据时,修改(或添加)SC_NUMBER(包括学生学号和选课门数两列)表格中的数据。 2、当删除SC表中数据时,修改(或添加)SC_NUMBER中的数据。 3、当修改SC表中数据时,若修改的是学号,则对应修改SC_NUMBER表中的选课门数,否则打印“某某(学生姓名)的学生选课信息已经修改”信息。 1、修改STUDENT表数据时,限制不能修改学生的系别(不能修改CS系学生的系别)。 2、插入课程时,课程号以‘S’开头的课程的学分不能低于3分。 3、不能删除90分以上学生的选课信息。 插入Student表中数据时,CS系学生的年龄不能大于30岁。 当修改Student表中的年龄
字段
时,使其只能增加,不能减少。 删除Student表中的学生信息时,判断在SC表中该学生的平均成绩是否高于60,若高于60,则不能删除,否则允许删除,同时删除SC表该学生对应的选课信息。 在Student表中添加列:sum_Grade(总成绩),avg_grade(平均成绩)。 在SC表中作一
触发器
,当添加,删除或修改一行之后,将该学生在Student表中的总成绩和平均成绩相应改变。 插入或修改(修改课程号时)选课信息时,若该课程的选课人数已满,则不允许操作,并抛出相应的错误提示。
MySQL
触发器
Re: MySQL
触发器
============================= #
触发器
概念
触发器
,顾名思义,就是当执行某个事件的时候触发另一个事件的执行!数据库中的
触发器
是和表关联的特殊的存储过程,它可以在插入、删除或修改该表表...
oracle监控某表变动
触发器
例子(监控增,删,改)
使用oracle
触发器
实现对某个表的增改删的监控操作,并记录到另一个表中。 代码: 代码如下:create or replace trigger test_trigger before insert or update or delete on test_table for each row declare v_id varchar2(30); v_bdlb varchar2(1); v_jgdm VARCHAR2(12); v_jgmc VARCHAR2(60); v_gajgmc VARCHAR
oracle数据库
字段
值自动加1
往数据库中添加数据时,
字段
值自动加1: 1、创建表 2、创建序列 3、创建
触发器
基础和管理
17,377
社区成员
95,128
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章