I wish to create an Oracle insert/update trigger to populate a name field in my table with an uppercased and rtrimmed version of the name supplied by the user. This is the trigger I have that does not work:
create or replace trigger userNameTrigger after insert or update of fname, lname on users for each row begin -- save 'standardized' name ufname = rtrim(upper(fname)); ulname = rtrim(upper(lname)); end; / commit
Can you help?
Write something like this:
create or replace trigger userNameTrigger before insert or update on users for each row begin IF inserting or (UPDATING and (:new.fname <> :old.fname OR :new.lname <> :old.fname)) then -- save 'standardized' name :new.ufname := rtrim(upper(:new.fname)); :new.ulname := rtrim(upper(:new.lname)); END IF; end; /
This should work. Note that commit is forbidden inside the trigger definition, so you should put the commit after it in the following script.
For More Information
- What do you think about this answer? E-mail the editors at editor@searchDatabase.com with your feedback.
- The Best Oracle Web Links: tips, tutorials, scripts, and more.
- Have an Oracle or SQL tip to offer your fellow DBAs and developers? The best tips submitted will receive a cool prize. Submit your tip today!
- Ask your technical Oracle and SQL questions -- or help out your peers by answering them -- in our live discussion forums.
- Ask the Experts yourself: Our SQL, database design, Oracle, SQL Server, DB2, metadata, object-oriented and data warehousing gurus are waiting to answer your toughest questions.
Dig Deeper on Oracle database design and architecture
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.