首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用此触发器oracle数据库变化表

使用此触发器oracle数据库变化表
EN

Stack Overflow用户
提问于 2013-11-13 16:59:09
回答 3查看 255关注 0票数 1

使用Oracle数据库,需要以小写存储所有行。所有INSERTUPDATE都应该使用小写数据插入和更新行。我写了一个触发器来做。读了很多关于triggers.Very表突变的困惑,这段代码会不会引发突变错误。请在这里写,如果可以的话。

代码语言:javascript
复制
create or replace trigger employee_name
before update or insert on employee
for each row
begin
/* convert character values to lower case */
:new.lastname := lower( :new.lastname );
:new.firstname :=lower( :new.firstname );
end;
/
EN

Stack Overflow用户

发布于 2013-11-13 17:10:45

触发器不会引发变化表错误,因为您没有从触发器所在的表中进行选择;您只是重新赋值,而这正是触发器设计的目的。

值得注意的是,这也可以通过CHECK约束来完成,它将强制每个人更新或插入到表中以将所有内容都小写:

代码语言:javascript
复制
alter table employee_name 
  add constraint chk_emp_name_lastname 
      check ( lastname = lower(lastname) )

虽然这会增加更新/插入时间(不一定比使用触发器更多),但它不会默默地更改正在输入的数据,而是会抱怨数据不正确。这有时是一种更好的方法。

票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19949416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档