Help with writing an UPDATE Trigger

I need to put an update restriction on a field in a table.
For example, in my employee table, I want to disallow updates to telephone number but allow updates to all other fields.
Can someone help me with the coding?
Here is a sample employee table structure.
Table Name: Employee
Date Fields: LName, Fname, SSN, Phone, Address, City, State, Zip
Thanks in advance.

The best way to do this would be to restrict users so they can only update tables through stored procedures and then not prevent updates to phone number in the procedure.
In a trigger, however
CREATE OR REPLACE TRIGGER trg_name
  BEFORE UPDATE ON employee
  FOR EACH ROW
BEGIN
  IF( :new.phone != :old.phone )
  THEN
    RAISE_APPLICATION_ERROR( -20001, 'Updates to phone number are not allowed.' );
  END IF;
END;Note that
- I'm ignoring the possibility that the old or new phone number could be NULL
- You would probably want to declare an exception type in a package and throw that exception to make it easier for the caller to catch.
Justin

Similar Messages

  • Help with writing and retrieving data from a table field with type "LCHR"

    Hi Experts,
    I need help with writing and reading data from a database table field which has a type of "LCHR". I have given an example of the original code but don't know what to change it to in order to fix it and still read in the original data that's stored in the LCHR field.
    Basically we have two Function modules, one that saves list data to a database table and one that reads in this data. Both Function modules have an identicle table which has an array of fields from type INT4, CHAR, and type P. The INT4 field is the first one.
    Incidentally this worked in the 4.7 non-unicode system but is now dumping in the new ECC6 Unicode system.
    Thanks in advance,
    C
    SAVING THE LIST DATA TO DB
    DATA: L_WA(800).
    LOOP AT T_TAB into L_WA.
    ZDBTAB-DATALEN = STRLEN( L_WA ).
    MOVE: L_WA to ZDBTAB-RAWDATA.
    ZDBTAB-LINENUM = SY-TABIX.
    INSERT ZDBTAB.
    READING THE DATA FROM DB
    DATA: BEGIN OF T_DATA,
                 SEQNR type ZDBTAB-LINENUM,
                 DATA type ZDBTAB-RAWDATA,
               END OF T_TAB.
    Select the data.
    SELECT linenum rawdata from ZDBTAB into table T_DATA
         WHERE repid = w_repname
         AND rundate = w_rundate
         ORDER BY linenum.
    Populate calling Internal Table.
    LOOP AT T-DATA.
    APPEND T_DATA to T_TAB.
    ENDLOOP.

    Hi Anuj,
    The unicode flag is active.
    When I run our report and then to try and save the list data a dump is happening at the following point
    LOOP AT T_TAB into L_WA.
    As I say, T_TAB consists of different fields and field types whereas L_WA is CHAR 800. The dump mentions UC_OBJECTS_NOT_CONVERTIBLE
    When I try to load a saved list the dump is happening at the following point
    APPEND T_DATA-RAWDATA to T_TAB.
    T_DATA-RAWDATA is type LCHR and T_TAB consists of different fields and field types.
    In both examples the dumps mention UC_OBJECTS_NOT_CONVERTIBLE
    Regards
    C

  • Help with writing a formula

    Hi all,
    I am creating a report, and need help with writing a formula...
    I am creating a report that shows how many visits/touches our reps have made to various grade accounts. It is broken down by calendar week, and I currently have a weekly "goal" number set that the reps have to meet. That "goal" number increases each week to keep a running total. (example: week 1: 7, week 2: 14, week 3: 21)
    I have created some different formulas and one is this:
    SUM("Activity Metrics"."# of Activities" BY Date."Calendar Week")
    What this shows me is how many "visits" there are per calendar week to customers, however it show me the total for all reps per week.
    What I need is that total to show, but totaled for each rep individually.
    What I was trying is this:
    SUM("Activity Metrics"."# of Activities" BY Date."Calendar Week") BY Employee."Employee Name"
    But...I keep getting an error.
    Any suggestions?
    I have the reporting book by Lairson, and have been referring to it...but my brain at this point is fried.
    Thanks in advance for any help...(please forgive...I am new to OnDemand, and I am sure this is easy)

    Thanks for helping!
    I created this formula as a column: SUM ("Activity Metrics"."# of Activities" BY Date."Calendar Week"), it is called "total number of visits per week" and it shows the totaled number of visits that all the reps have done per calendar week. For example: Week 1: 10 visits, Week 2: 37 visits, Week 3: 20 visits.
    What I would like to do is take that column and break it down further, to show instead how many visits per week by sales rep there have been
    So what I was trying was to take the "total number of visits per week" (SUM ("Activity Metrics"."# of Activities" BY Date."Calendar Week")) and use "Activity Owner" (Employee."Employee Name") to break it down further.
    What I need to use is the total number of visits each rep has per calendar week.
    I think I am getting the error because you can't use "BY" twice in a formula?

  • Help with Adobe Reader update installation on mac book pro

    am trying to update adobe reader 9.4.6 to the latest version on my mac book pro. Am able to download the updtae to 10. whatever and proceed with installation. At the step where I am asked to choose the adobe reader file, I select the file and then the process stops and I get a message that installation has failed and i am to contact the software manufacturer.

    I figured it out. Thanks!
    The key, during both life and death, is to recognize illusions as illusions, projections as projections, and fantasies as fantasies. In this way we become free.
    Date: Mon, 10 Sep 2012 04:54:45 -0600
    From: [email protected]
    To: [email protected]
    Subject: Help with Adobe Reader update installation on mac book pro
        Re: Help with Adobe Reader update installation on mac book pro
        created by Nikhil.Gupta in Adobe Reader - View the full discussion
    How exactly are you trying to update your Adobe Reader 9.4.6Try the following link to download latest Adobe Raeader: http://get.adobe.com/reader/
         Replies to this message go to everyone subscribed to this thread, not directly to the person who posted the message. To post a reply, either reply to this email or visit the message page: http://forums.adobe.com/message/4686315#4686315
         To unsubscribe from this thread, please visit the message page at http://forums.adobe.com/message/4686315#4686315. In the Actions box on the right, click the Stop Email Notifications link.
         Start a new discussion in Adobe Reader by email or at Adobe Forums
      For more information about maintaining your forum email notifications please go to http://forums.adobe.com/message/2936746#2936746.

  • Help with writing .bashrc file

    I would like help with writing a .bashrc file.
    The only thing I want right now is colored output and slashes for directories like what "ls -GF" does -- for each new terminal window.
    Can you guys give me a hand?
    Running Mac OS 10.4.6. Bash is default shell.
    Thanks.

    Hi Paul,
       You can get Apple's "ls" command to always output color with the following in your .bashrc:
    export CLICOLOR=""
    You can have an effect on the colors used with settings like the following:
    export LSCOLORS="gxfxcxdxbxegedabafacad"
       I have a color prompt in my bash startup scripts, bashrc.tgz. If you unpack the tarball in the root of your home directory, the files will be put in a ~/Library/init/bash directory. The file named "prompt" sets the color prompt string.
    Gary
    ~~~~
       I know you think you thought you knew what you
       thought I said, but I'm not sure you understood what
       you thought I meant.

  • Help with Oracle Table Audit Trigger

    Hi Guys,
    Need some help with the design of a trigger please. I have created one standard audit table where all sensitive data will be audited/inserted. The idea is to insert the column name and the old and new values here, dont want to maintain an audit table for each and every table there is, reporting would be a nightmare.
    Trying to fetch all the column names from sys objects then looping through each and inserting the new and old values for them into the audit table. Everything else is fine apart from the actual :old and :new value inserts. The column name is coming from a variable in a cursor and this is where I seem to be failing.
    Can anyone help please? What is the correct syntax to use?
    CREATE OR REPLACE TRIGGER commission_update
        AFTER UPDATE
            ON commission
            FOR EACH ROW
    DECLARE
            v_username varchar2(10);
              v_column varchar2(20);
              -- Get Table Columns
              cursor table_column is
                      select c.name
                      from  sys.col$ c, sys.obj$ t
                      where t.obj# = c.obj#
                      and   t.type# in (2, 3, 4) 
                      and   bitand(c.property, 32) = 0 /* not hidden column */
                      and t.name = 'COMMISSION';
        BEGIN
            -- Find username of person performing UPDATE into table
            SELECT user
         INTO v_username
            FROM dual;
              open table_column;
                    loop
                          fetch table_column
                         into v_column;                    
                         EXIT WHEN table_column%NOTFOUND;
                                 -- Insert record into audit_record
                             INSERT INTO audit_record
                                  ( aud_code,
                                      aud_ban_code,
                                      aud_user,
                                      aud_table,
                                  aud_column,
                                   aud_old_val,
                                   aud_new_val,
                                   aud_date )
                                VALUES
                                  ( xaudit_record.nextval,
                                      :old.com_ban_code,
                                      v_username,
                                      'COMMISSION',
                                   v_column,
                                   :old.v_column, /* problem here!!!!!!! */
                                   :new.v_column, /* problem here!!!!!!! */
                                   sysdate );
                    end loop;
              close table_column;
        END;
    /

    What does auditing mean in the financial environment? "An audit is a professional, independent examination of a company's financial statements and accounting documents according to generally accepted accounting principles."
    What does it mean in database terms? Surely, the basic definition would be the same, ito of a proper independent examination of changes in the database according to accepted principles?
    And just how does a trigger live up to that? When it is fully dependent on being enabled for that transaction in order to examine it? It is trivial to disable a trigger, make changes, and re-enable it.
    So what happens to your "auditing" then?
    Do you really think that a trigger suffices as a means to audit changes in a table? And if so, what logic and reasoning do you use to discard Oracle's auditing features that are built into the core of the database?

  • ApEx 4.1.1: update record in a view with 'instead of update' trigger

    I created a form against a view. The view is complex enough which prevents direct updates. To incorporate the update logic I created an 'instead of update' trigger on the view. When I open up the form, do changes, and click 'Apply Changes' button I am getting the following exception
    ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.
    I understand that the standard 'Automatic Row Processing' process is trying to lock the record before updating using a cursor like
    select *
    from my_view
    for update
    and fails. Is it possible to bypass this locking while using the standard APEX processes?
    I think I can create a custom PL/SQL process which would execute the UPDATE statement (at least, it works in SQL*Plus), but I would like to know if I can use a standard ApEx functionality for this.

    Hello,
    Sorry for delay.
    I had found a feedback about trigger issue when restore SQL Database from a BACPAC file. Microsoft said the fixed  will be available in the next major release of DacFx.
    Feedback:
    SQL Azure fires a trigger when restoring from bacpac
    You can refer to the workarounds in the feedback. For example, if there is small amount of triggers on the database, you can try to remove the triggers and then recreate when restore from bacpac file.
    Regards,
    Fanny Liu
    Fanny Liu
    TechNet Community Support

  • Please help with writing a class

    i need help getting started with this assignment. i haven't done anything with writing classes, so i don't know where to start.
    i need to create a bank account class that will keep a name, balance, up to 50 deposits, and up to 50 withdrawls. i need to include 2 arrays for the deposits and withdrawls.
    Here's what i know:
    I need a constructor that takes zero arguments. This constructor would initialize the numeric value to zero.
    I need a 2nd constructor that takes one argument, a name as a String value. This constructor would initialize the numeric value to zero.
    I need a 3rd constructor that takes two arguments, a name as a String value and a starting "balance" as a double value

    Sorry, I was watching a movie with my wife ...imagine that. Study my examples here and try to understand what I have done. You will follow the same methodology for the rest of the program. Use main to test the methods in your program.
    public class mdlAccount {
      String name;
      double balance;
      int currentDeposit = 0;
      int currentWithdrawl = 0;
      double[] deposits = new double[50];
      double[] withdrawals = new double[50];
      public mdlAccount() {
        name = "";
        balance = 0.0;
      public mdlAccount(String name) {
        this.name = name;
        balance = 0.0;
      public mdlAccount(String name, double balance) {
        this.name = name;
        this.balance = balance;
      // When the instructor says: Have a method that does deposits...
      // You need to create a method, similar to the constructors,
      // but with a return value, even if it returns void (nothing).
      // Like this:
      public void deposit( double amount ) {
        // Do some error checking.
        if ( currentDeposit < 50 && amount > 0 ) { // > is a greater than sign
          // If all is ok, add to the balance...
          balance += amount;
          // and add the entry to the array of deposits
          deposits[currentDeposit] = amount;
          // Finally, add 1 to the currentDeposit variable.
          currentDeposit++;
      // We need the 'return the balance' method so we can see if
      // the program runs correctly. This time we return a double,
      // instead of void. (void means don't return anything at all).
      public double getBalance() {
        return balance;
    // Now you create the next method for withdrawals...
    //  if ( currentWithdrawl < 50 ) {
    //    deposits[currentWithdrawl] = amount;
    //    currentWithdrawl++;
      // You want a main method so this class can be executed.
      // You can remove it later if you want to use this class
      // from within another larger program.
      public static void main(String[] args) {
        mdlAccount acct = new mdlAccount( "GumB", 100.0 );
        System.out.println("Initial balance is " + acct.getBalance());
        acct.deposit( 50.0 );
        System.out.println("Current balance is " + acct.getBalance());

  • Help with writing a batch file

    Hi :
    does anyone know anyplace online that I can get help in writing batch files?? I have never worked much with batch files before....
    any help is greatly appreciated
    thnx

    I suppose, since you're in a Java forum, you need batch files to load java applications.
    If you use windows :
    go to ms console (start/run/"cmd")
    type edit mybatch.bat
    write your command to load a java application, something like
    java myclass.class
    save and exit.
    Be sure the bat file and the class are in the same folder.
    And make certain you've set the classpath, and path variables correctly.
    If this was what you needed and you need more help just ask.
    (In this case it could be better to make executable jars)
    If you wanted to know about linux batches, it works pretty the same way.

  • I need help with a software update problem??

    I recently got a new macbook pro and I was doing a software update last night as it was required but then when it started to do the update the computer installed the software and then a barring noise came from the mac and it tried to restart 4 times before it eventually came back on. The software trying to install was Fireware 800 I think. Can anyone help with this?

    Try MacBook notebook forum to talk to other users, or OS Software (Lion or Snow Leopard)
    Does not sound like an Apple OS update though.
    http://support.apple.com/downloads/
    https://discussions.apple.com/community/notebooks
    http://www.apple.com/support/macbookpro

  • Need help with "Nokia Software Updater"...Plz

    hi
    plz help me
    every time i try to install
    and it gave me this MSG
    " Error 2738.Could not access VBScript run time for custom action."
    my Lap work with W.vista
    and i have N95-8GB
    plz i need a help to update my phone

    Please do a search on this forum for "6280 software update" and you will have your answer.
    Many people have written here about Nokia software updater that tries to flash their 6280 phones with V6.10 (intended for the 6288) and then breaks their phones.
    I myself was busy downloading the firmware for a friends 6280 that was just minutes away from being flashed with 6.10 when I came across messages on many sites telling about the issue with the software updater and 6280 phones. I managed to save that 6280 from sure doom.
    If you also searched before hand you would not have this trouble.
    You need to take the phone to a nokia Service centre to have it flashed now and get it into a working state.

  • Help with writing, reading a file...

    I'm writing a program that writes a number to a file and then reads it again each time it is loaded. It's like a counter, the number starts out being 0, then when the program is run again the number will be two, and so on and so on. I've never been good with writing incrementer type things and files, so could you help me out? Remember, the program writes a single number to the file, and then adds one to that number each time the program is run, so it starts at zero and goes up by one each time it is run.
    -Thanks... I just came back from vacation and my Java skills are somewhat lacking :P

    open old file -> get the number -> create a new file -> write new number

  • Please help with RAID driver update.

    I need a little help with updating my RAID drivers. I have P55-GD65 motherboard and some SATA2 hard drives connected in RAID arrays. I am running Win7 64bit.
    I already downloaded and installed:
    “Intel P55 AHCI / RAID Drivers Ver: 8.9.0.1023”
    from the MSI support web page. The setup file installed the “Matrix Storage Manager” and  the “Matrix Storage Console”
    On the same web page I see another download link:
    “Intel Matrix Storage Manager Driver Ver: 9.5.0.1037”
    It looks like I already installed the manager with the previous driver. Do I need to install this one too? What is the difference between both?
    Also when I open the “Intel Matrix Storage Manager Driver Ver: 9.5.0.1037” I see 2 executable files:
    “iata_cd.exe” and “iata_enu.exe”
    I read the “Readme.txt” provided, but I couldn't find information on what is the difference between the EXE files and which one I should use.

    Quote
    I read the “Readme.txt” provided, but I couldn't find information on what is the difference between the EXE files and which one I should use.
    Use either one.  It doesn't matter in a functional way.

  • Help with Footers (New Update Glitch)

    Hi there,
    I'm in need of some urgent help with my website as upon publishing with the new update installed all my footers have changed.
    I now have massive gaps between where my content ends and the footer begins on almost every page. Example.
    Pages which are attached to the Master pages are not reading the same footer positions now. For example, my home page footer begins at nearly 1300 but the master it's attached to it should be closer to 950..... Everything was fine until the update today.
    Any help would be appreciated. Thanks!

    Maybe I can explain this a little better, issue is still going on, spoke with an Adobe representative but didn't get any helpful advice, actually got no advice other than to send the file in.
    So here's my home page: you can see the gap between the content and the footer (with the footer starting at around 1300.
    But then here's the Master page it's attached to, the footer is set to start way higher, this is happening on every one of my pages.

  • Help with automating "System Update"

    edit:
    please help - who do I contact in Lenovo / IBM to get real help with this ?
    this is a corporate project and I need to resolve this as soon as possible.
    does anyone from Lenovo actually read this forum?
    I've opend a support call in Lenovo's helpdesk (via email) but no reply except an automated one for... like a week.
    help! help! help! we don't mind paying for it, we NEED to resolve this.
    any help at all would be greatly appretiacted. please point me at the right direction?
    sorry for this venting but really, I just need to get a move on this already... :-0
    can anyone at all help ?
    any idea where I can find more information / expert assistance ?
    thanks for any help...
    -Shay
    Hi,
    I've been able to fully automate System Update distribution using Group Policy. this works perfectly.
    I am now trying to achive the same functionality using scritps.
    the problem: I get quite a few prompts for "License Agreement" - not the "master" initial one, only a few for the different installs.
    here's my setup:
    1. a local server is the repository.
    2. I import a .reg file before installing "System Update" using an automated install.
    3. after a restart, a command runs on the local machine.
    here are the details:
    registry settings:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Lenovo\System Update]
    "LanguageOverride"="EN"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Lenovo\System Update\UserSettings\General]
    "IgnoreLocalLicense"="YES"
    "DisplayLicenseNotice"="NO"
    "DisplayLicenseNoticeSU"="NO"
    "ExtrasTab"="NO"
    "RepositoryLocation1"="***my internal server here ****"
    "RepositoryLocation2"=""
    "RepositoryLocation3"=""
    "NotifyInterval"="36000"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Lenovo\System Update\UserSettings\Scheduler]
    "SchedulerAbility"="YES"
    "SchedulerLock"="LOCK"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Lenovo\MND\TVSUAPPLICATION]
    *** network drive mapping here, this part works ***
    also, I use this command to run the updates:
    call "C:\Program Files\Lenovo\System Update\tvsu.exe" /CM -search A -action INSTALL -IncludeRebootPackages 1,3,4 -noicon
    I am just about desperate... I would REALLY REALLY appreciate any help, hint etc :-)
    Thanks for ...even trying... lol
    regards,
    Shay
    Message Edited by catman2u on 03-18-2008 05:04 AM
    Message Edited by catman2u on 03-25-2008 02:41 AM

    catman2u wrote:
    does anyone from Lenovo actually read this forum?
    From the Communiy Rules in the Welcome section....
     Objectives of Lenovo Discussion Forums
    These communities have been created to provide a high quality atmosphere in which users of Lenovo products and services may share experiences and expertise. While members from Lenovo may participate at intervals to engage in the discussions and offer advice and suggestions, this forum is not designed as a dedicated and staffed support channel. This is an informal and public forum, and Lenovo does not guarantee the accuracy of information and advice posted here -- see important Warranty information below.
    No amount of ranting is going to get you anything more than you will achieve with a clear exposition of your issue... so you might want to try doing that instead of ranting and assuming that everyone already knows what you know etc etc.
    Cheers,
    Bill
    I don't work for Lenovo

Maybe you are looking for