想学习一下触发器。请指教
有一张表A,三个字段ID,NAME(中文名),XMPY(名字首字母)
有一个函数F_TRANS_PINYIN_CAPITAL
如果增加一条记录1,张三
那个XMPY自动更新为‘zs’请问这个触发器怎么写?
有一张表A,三个字段ID,NAME(中文名),XMPY(名字首字母)
有一个函数F_TRANS_PINYIN_CAPITAL
如果增加一条记录1,张三
那个XMPY自动更新为‘zs’请问这个触发器怎么写?
解决方案 »
- Oracle如何删除用户及用户下的全部数据?
- ORA-24338:未执行语句句柄 如何解决??
- 新手请教Oracle连接问题!
- Oracle 10g客户端
- order by语句怎么优化
- 菜鸟提问:数据和表的分析过程或分析后用不用重启服务,在分析过程中要注意什么问题,用停掉应用吗?
- oracle 根据其它表更新数据
- ORACLE11G 201 RAC 日志切换很频繁 日志文件没到100M就
- 急!数据导入后的更新问题!
- 创建用户
- 分析tnsnames.ora文件失败, ServiceAliasException:11
- 【100分】c#连接Oracle,我在本地装了客户端,TNS:could not resolve the connect identifi
before insert on a
for each row
begin
:new.XMPY := F_TRANS_PINYIN_CAPITAL(:new.NAME);
end;
SQL语句啊
个人认为难点在于:增加一条记录的时候,你怎么知道这条记录中的ID是多少?
另外函数F_TRANS_PINYIN_CAPITAL 就是把名字更新为姓名首字母的。
create or replace trigger a_trigger
before insert on a for each row
declare
pragma autonomous_transaction; --自由实务处理,调用函数或存储过程触发器有问题的话最好加这句
i_xmpy char(6); --长度根据实际情况定,建议别用varchar2
begin
i_xmpy := F_TRANS_PINYIN_CAPITAL(:new.NAME);
update a set XMPY = i_xmpy
where ID = :new.ID; --ID字段用的是序列的话,“:new.ID”可换成“序列名.currval”
end;这段代码我直接写的,没有编译过,你先试试,没问题的话可以进行简化
看不懂的帖子 我很少回复 也懒得问