使用Oracle数据库,需要以小写存储所有行。所有INSERT和UPDATE都应该使用小写数据插入和更新行。我写了一个触发器来做。读了很多关于triggers.Very表突变的困惑,这段代码会不会引发突变错误。请在这里写,如果可以的话。
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;
/发布于 2013-11-13 17:10:45
触发器不会引发变化表错误,因为您没有从触发器所在的表中进行选择;您只是重新赋值,而这正是触发器设计的目的。
值得注意的是,这也可以通过CHECK约束来完成,它将强制每个人更新或插入到表中以将所有内容都小写:
alter table employee_name
add constraint chk_emp_name_lastname
check ( lastname = lower(lastname) )虽然这会增加更新/插入时间(不一定比使用触发器更多),但它不会默默地更改正在输入的数据,而是会抱怨数据不正确。这有时是一种更好的方法。
https://stackoverflow.com/questions/19949416
复制相似问题