Sequence inside a Trigger ??

Is it possible to use a sequence inside trigger's definition ?
I don't understand why when i give a static value to my RowId in a trigger's definition it works, but when get a value from a sequence, the trigger become invalid.
Please Help.

Somewhat off the spatial topic but what the heck! This is easy :
SQL> create table t
2 (person_id number,
3 person_name varchar2(32));
Table created.
SQL> create sequence person_id_seq start with 1 increment by 1;
Sequence created.
SQL> create trigger person_id_trig
2 before insert
3 on t
4 for each row
5 begin
6 select person_id_seq.nextval
7 into :new.person_id
8 from dual;
9 end;
10 /
Trigger created.
SQL> insert into t (person_name) values ('Steve');
1 row created.
halls@GENDEV> select * from t;
PERSON_ID PERSON_NAME
1 Steve
SQL> insert into t (person_name) values ('Rod');
1 row created.
halls@GENDEV> select * from t;
PERSON_ID PERSON_NAME
1 Steve
2 Rod
SQL>
Steve

Similar Messages

  • Using a sequence inside BEFORE TRIGGER

    Hi all,
    I just created a testtable and a sequence to use as a primary key column value for that table.
    I tried to create a BEFORE INSERT trigger on that table and in the trigger i tried to set up the primary key column value using the sequence
    but while compiling i am getting the error "Error(9,30): PLS-00357: Table,View Or Sequence reference 'SEQ_OF_TESTTABLE.NEXTVAL' not allowed in this context"
    My Version:Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
    All the objects created with the same user. I would appraciate any help, thanks all
    EDIT
    I solved the problem using the below
    create or replace
    TRIGGER Bef_Ins_On_Testtable
    BEFORE INSERT ON TestTable
    FOR EACH ROW
    declare
    ntemp_id INT;
    BEGIN
    SELECT SEQ_OF_TESTTABLE.NEXTVAL INTO ntemp_id FROM DUAL ;
    DBMS_OUTPUT.PUT_LINE('İNSERTED');
    :NEW.VSURNAME := 'HAKKİ' ;
    :NEW.NID := ntemp_id;
    END;But i wonder why i can use the sequence(just as seqeunce_name.NEXTVAL) in INSERT statement and why cant in trigger?
    Edited by: user9371286 on 31.Tem.2010 04:15
    Edited by: user9371286 on 31.Tem.2010 04:21
    Edited by: user9371286 on 31.Tem.2010 04:27

    Please post your trigger code and your database version ( the result of: select * from v$version; ).
    Put it between tags, so your example will stay formatted.
    (see: http://forums.oracle.com/forums/help.jspa for more examples regarding tags)
    "PLS-00357: Table,View Or Sequence reference "string" not allowed in this context
        Cause: A reference to database table, view, or sequence was found in an inappropriate context. Such references can appear only in SQL statements or (excluding sequences) in %TYPE and %ROWTYPE declarations. Some valid examples follow: SELECT ename, emp.deptno, dname INTO my_ename, my_deptno, my_dept .FROM emp, dept WHERE emp.deptno = dept.deptno; DECLARE last_name emp.ename%TYPE; dept_rec dept%ROWTYPE;
        Action: Remove or relocate the illegal reference."
    +http://download.oracle.com/docs/cd/B19306_01/server.102/b14219/plsus.htm#sthref13592+
    You can find examples of triggers referring to sequences here, by doing a search on this forum or:
    http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#ABC1032282                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Using sequence in insert trigger?

    Hi all,
    I'm new to this forum, and for that matter, any forums related to computers.
    I would appreciate it if anyone would give me some hinters.
    I created a table with an ID column of type "Number." And I want to populate that column with a sequence number everytime I insert into that table.
    I have a sequence named "sequence1_account."
    Below is my insert trigger code:
    create TRIGGER system.trigger1_account
    BEFORE INSERT ON system.table_account
    for each row
    BEGIN
    :new.id := sequence1_account.NextVal;
    END;
    Note:
    user is "system"
    table is "table_account"
    The error that I get when I try to compile this is
    PLS-00357: Table,View Or Sequence reference 'SEQUENCE1_ACCOUNT.NEXTVAL' not allowed in this context
    So, does that mean I cannot use a sequence in a trigger?
    Thanks in advance!
    in His love,
    HS

    Hello,
    Hoping for some help with sequence triggers as well.
    CREATE TRIGGER "SCALS"."TRIGGER_CALL_NUM"
    BEFORE INSERT ON "CALLLOG" FOR EACH ROW
    BEGIN
    select num_callers.NextVal into : new.callernumber from dual;
    END;
    Problem is that the trigger status is invalid ??
    The error I get is in German (German installation)
    Zeilen-# = 0 Spalten-# = 0 Fehlertext = PLS-00801: internal error [ph2csql_strdef_to_diana:bind]
    Zeilen-# = 2 Spalten-# = 57 Fehlertext = PL/SQL: ORA-06544: PL/SQL: internal error, arguments: [ph2csql_strdef_to_diana:bind], [], [], [], [], [], [], []
    Zeilen-# = 2 Spalten-# = 1 Fehlertext = PL/SQL: SQL Statement ignored
    But perhaps something looks familiar???

  • Function inside a trigger

    Can i write function inside a trigger?
    My requirement is that i've to call a function inside a trigger. Since this function is not frequently used so what i am thinking that i should write this function inside trigger. Can i do that?
    i know that function can be called inside trigger, but can i create a function inside trigger?
    if yes, then how?
    give me an overview. I'll appricate any kind of help.

    Hi,
    jadoo wrote:
    you mean to say that i can create a function in declaration section of trigger?Just an example,
    SQL> select empno,sal, deptno
      2  from emp
      3  where empno=7369;
         EMPNO        SAL     DEPTNO
          7369        800         20
    SQL> create table sal_inc_tab
      2  (inc_empno number,
      3  inc_sal number);
    Table created.
    SQL> create or replace trigger f_trg After update on emp
      2  REFERENCING NEW AS NEW OLD AS OLD
      3  FOR EACH ROW
      4  Declare
      5   v_inc_sal number;
      6   function sal_inc (v_sal number)
      7   return number as
      8   Begin
      9    return :new.sal+3000;
    10   end sal_inc;
    11  BEGIN
    12   v_inc_sal:=sal_inc(:new.sal);
    13   Insert into sal_inc_tab values(:new.empno,v_inc_sal);
    14  end;
    15  /
    Trigger created.
    SQL> select * from sal_inc_tab;
    no rows selected
    SQL> update emp
      2  set deptno=10
      3  where empno=7369;
    1 row updated.
    SQL> select * from sal_inc_tab;
    INC_EMPNO    INC_SAL
          7369       3800You can do same thing without function. Here there was no specific logic as such, it was just to show you how this is executed.
    Twinkle

  • Call *.jar inside the trigger (MS SQL)

    Hi!
    I'm just looking around google and can't find any good news.. The problem is: how to call *.jar inside the trigger. Trigger is stored in M$ Server.
    Tnx, if any response! ;)

    What?

  • Stacked sequence inside for loop question

    Hi everyone,
    I am new to LabVIEW and I just want to make a for loop with a stack sequence inside. I want it so that when the for loop executes for the n-th time, the stacked sequence is at the n-th frame (because each frame contains different tasks to be carried out). Is this possible? or is there an alternative equivalent method? Please help me out! Thanks!!

    Thank you Norbert for the words of advice.
    Try to avoid Stacked Sequence Structures at all cost.  They are a nightmare to deal with when maintaining the code and they do not offer simple scalability, especially if you need to deal with parallelism.
    As Norbert suggested, State Machines is the way to go.  Try to avoid naming covention such as 1...2...3...4...5.......9999.  Give the name of each case based on what that case does.  Create a TypeDef Control for the state selector (you'll thank me after having changed it for the 5th time   ).
    There are probably 100's of examples in this forum.
    RayR

  • Auditing inside a Trigger

    Inside my trigger I want to write for auditing purposes certain values that get updated. However I am unable to commit within my trigger. Is there some way to write certain values to another table when my trigger is fired?

    Yes you can do insert, update and delete operation on other tables inside a trigger. But COMMIT is not allowed inside a trigger.
    Because a trigger is considered as a part of a transaction. So the action of a trigger should not get commit unless the invoking statement is committed.
    But even then you can define a trigger as a [AUTONOMOUS_TRANSACTION.|http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/autonotransaction_pragma.htm#LNPLS01302] Which lets you to commit. But you must be very careful before using it. Know the effects of using it before doing so.

  • Why can't see the timeline audio waveform on sequences inside another sequence in Premiere Pro CS6? Can I fix this?

    Does anyone know why I can't see the timeline audio waveform on sequences inside another sequence in Premiere Pro CS6? Can I fix this?

    PERFECT!!! THANK YOU, Ann!!!

  • Problem using a sequence in a trigger

    I am creating a table, sequence and trigger as below. When I insert into the table I get the error message
    'ORA-04098: trigger 'SIMS2.BEF_INS_MATERIAL_COST' is invalid and failed re-validation'
    I am using TOAD rather than SQL Plus to do all this. Any idea what is causing the problem?
    create table material_costs
    material_id NUMBER(8) not null,
    material_desc VARCHAR2(50),
    material_rate NUMBER(8,2)
    tablespace sims2data;
    create index material_costs_1
    ON material_costs (material_id)
    tablespace sims2index;
    create sequence material_costs_seq
    increment by 1
    start with 1
    nomaxvalue
    nocycle
    noorder
    cache 100;
    create or replace trigger bef_ins_material_cost
    before insert
    on material_costs
    for each row
    begin
    if inserting then
    select material_costs_seq.nextval into new.material_id
    from dual;
    end if;
    end;

    Some older versions of Oracle do not allow the direct assignment of a sequence to the column, so you could try
    CREATE OR REPLACE TRIGGER bef_ins_material_cost
    BEFORE INSERT ON material_costs
    FOR EACH ROW
    DECLARE
    l_seqval NUMBER;
    BEGIN
       SELECT material_costs_seq.nextval INTO l_seqval
       FROM dual;
       :NEW.material_id := l_seqval;
    END; The TOAD editor does not require the :new syntax because new.material_id is, at least potentially, a valid construct, and can only be resolved at compile time by Oracle. Oracle will certainly complain about new.material_id not being declared.
    HTH
    John

  • Sequence number in Trigger

    I'm trying to create an insert trigger that will do the following:
    1.) Grab the next sequence number from a sequence and use it as the value for the id_number column.
    2.) Grab the SYSDATE and use it as the value for the create_date column.
    I'm using Oracle 8.1.6 on HP-UX. Here's my syntax, so far:
    CREATE OR REPLACE TRIGGER tI_GRANT_TEST_CHILD before INSERT on GRANT_TEST_CHILD for each row
    declare curDate DATE;
    declare idNumber NUMBER;
    begin
         SELECT SYSDATE into curDate FROM DUAL;
         SELECT GRANT_TEST_SEQ.NEXTVAL into idNumber FROM DUAL;
         :new.CREATE_DATE := curDate;
         :new.ID_NUMBER := idNumber;
    end;
    I'm pretty new to Oracle, so I've probably got a syntax error. The trigger worked fine when I just had the create date functionality; but, I can't get the sequence stuff to work.
    Also, anyone know any good links for Oracle syntax standards?
    Thanks for the help.

    I don't see anything wrong with the syntax in your example, but the trigger can be simplified to:
    create or replace trigger ti_grant_test_child
    before insert on grant_test_child
    for each row
    begin
      select grant_test_seq.nextval
        into :new.id_number
        from dual;
      :new.create_date := sysdate;
    end;
    /You can type SHOW ERRORS after compiling in SQL*Plus to see the actual errors.

  • Stacked sequence does not trigger

    I am reviewing Pull-down Menu.vi in Labview BasicsII: Development Coarse Manual. When I go through Exercise 2-7, I never get the dialog boxes. I have the Get Menu Selection wired to the stacked sequence where it connects to the box containing the question mark. When I choose "Test 2" or any of the menu choices, it does not trigger the frames.
    I ran the program in solutions on the disk, and this program runs correctly, showing the dialog boxes.
    I have had this problem before. I connect a wire to a stacked sequence where it shows the question mark. But the stacked sequence ignores the information coming to it.

    First, I think you're refering to a case structure and not a sequence structure.
    Second, you are probably not defining your cases properly. You can use probes to examine exactly what data you're sending to the case structure selector terminal (that's the question mark). If you are using strings, the strings have to much exactly to the strings in the case definition. If they don't match, the default case will execute. If, after using a probe to see what data you are sending the case structure, and after making sure you defined the cases correctly, you still don't see what's wrong, you should post your VI.
    I realize saying this is a bit unnecessary, because you already started, but...
    To learn more about LabVIEW, I suggest you try searching this site and google for LabVIEW tutorials. Here and here are a couple you can start with. You can also contact your local NI office and join one of their courses.
    In addition, I suggest you read the LabVIEW style guide and the LabVIEW user manual (Help>>Search the LabVIEW Bookshelf).
    Try to take over the world!

  • Midi sequences no longer trigger on-beat

    i have had recent problems where my project midi sequences suddenly do not trigger my external synths on-beat anymore - on playback i hear the messages triggered well before the beat. the bizzare thing is that if I record the audio input from that sequence, the recorded audio file is on-beat! if i open a new project everything is fine - so i don't think this is a latency issue. this has happened to a few projects recently. any suggestions on the fix, or what is causing the problem?

    Hi,
    I believe your problem is to with the incorrect PDC implementation Logic has for external midi.
    Unfortunately, you have one of two choices,
    1) do your midi outside logic (which I have sometimes resorted to)
    or
    2) use an external instrument object for your midi in logic, and route the audio output of your external into logic. This way you will get perfect and tight midi on playback, you just better not try record any jazz solos because the latency off course now affects your external midi instrument.
    From http://support.apple.com/kb/HT1213:
    +"Another effect with delay compensation set to All is that MIDI tracks triggering external sound modules will be out of sync. This is because Logic has no direct control over the audio output of external devices. A possible solution for this would be to route the audio outputs from the external MIDI devices to inputs on your audio hardware and monitor them through Logic. This way, the audio streams from the MIDI devices can be compensated during playback. Using Logic's External instrument to route MIDI to your external devices is an ideal way to work in this situation."+
    The above statement is my one and only gripe with logic. All they have to do is not send midi messages for the same amount of time that they set aside for PDC and everything would be great.
    I've heard of others using complicated methods to get around this, but they involve finding out the delay, which changes with every plug in introduced and subtracted, and whether your Mac is having a good or bad hair day.
    good luck.

  • Calling java class/procedure inside a trigger

    Hi all
    I want like to call a java procedure from a trigger.
    i know that i should load the class then write call specification and then call the java stored procedure.
    Before that what are the prerequisites ..
    Do i need to install java on my local machine?
    secondly for sample testing can you provide me a sample java code that will connect to my db and inserts some sample data into sample table
    regards
    raj

    Hi Here are the Details: I have the following
    Java File : Helloworld.java
    Class File : HelloWorld.class
    Location of Java and Class Files: C:\Program Files\Java\jdk1.6.0_13\
    Method : main(java.lang.String[])
    Helloworld.java
    class HelloWorldApp {
    public static void main(String[] args) {
    System.out.println("Hello World!"); // Display the string.
    loadjava -u HR/hr@ORCL C:\Program Files\Java\jdk1.6.0_13\HelloWorldApp.class ( From where should i run this command ?should i go to  windows--start--cmd  ? )
    CREATE OR REPLACE PROCEDURE sayhello ()
    AS LANGUAGE JAVA
    NAME 'HelloWorld.main(java.lang.String[])';
    CREATE OR REPLACE TRIGGER sal_trig
    AFTER UPDATE OF sal ON emp
    FOR EACH ROW
    CALL sayhello(); ------------------ ( where do i see the output when i call the procedure?)
    regards
    raj
    Edited by: raj_fresher on May 20, 2009 7:57 AM

  • How can I access user defined column(in query) inside the trigger?

    Hi
    I have 3 unions and each query displays different records on some criteria. I also have a column hard-coded
    Ex:
    select a.col1, a.col2,
    add as update
    from table1 a
    where ...
    union
    select a.col1, a.col2,
    change as update
    from table1 a
    where ...
    union
    select a.col1, a.col2,
    del as update
    from table1 a
    where ...
    And I need to display a column in the report only if update is Add. I was thinking of writing a format trigger for that field. But I do not know how can I access this user defined column named update in the trigger?
    Any help?

    Try ":update" minus the double-quotes. Ex:
        IF :update = 'add' THEN
          RETURN(TRUE);
        ELSE
          RETURN FALSE;
        END IF;
    You'll want to place your hard-coded values in single-quotes. Ex:
        select a.col1, a.col2,
        'add' as update
    - Brian

  • How to call a procedure inside a trigger?

    hi people,
    I have a trigger which cals a stored proc named PY.but i couldn get dis trigger worked out.can u pls sugges me?.the trigger is as follows.
    create or replace trigger ts after insert on s
    for each row
    begin
    call py
    if this trigger gets successfully created its enough for me.gimme some ideas.Thanks in advance.
    regards
    VIDS

    Hi,
    create or replace trigger ts after insert on s
    for each row
    begin
    call py
    just call 'py' no need of calling 'call py'.....
    create or replace trigger ts after insert on s
    for each row
    begin
    py;
    If it helps mark question as anwered or helpfull....
    Thanks,
    Pavan

Maybe you are looking for

  • Distiller Error: invalidfileaccess

    Hi there, maybe s.o. can help me.. Since I've updated acrobat Pro XI  I can't create pdf files out of autocad  anymore...I'm  getting the following error: %%[ ProductName: Distiller ]%% %%[ Error: invalidfileaccess; OffendingCommand: imageDistiller ]

  • Web service - how to use it ?

    Hello expert, i have to send a file using web wervice (consuming) ( from sap system toward external system ). Could you provide me a basic exemple to do it ? tks a lot, bye.

  • Laptop advice

    I am looking for all the advice I can before buying a new laptop. My question is will the following specs work well with adobe products like Photoshop, fireworks and like programs. I don't play any games so that is not an issue. I do mostly web desig

  • Last time I updated firefox Yahoo has taken over. I hate yahoo and would like to remove it is that possible?

    when I uploaded the new version of firefox yahoo has taken over. It over rides everything and I want to remove it is that possible to keep firefox but remove yahoo? When I put a address in the address bar yahoo over rides it and it goes to a yahoo pa

  • Loss of sound output and iTunes

    had a power cut yesterday and not sure if its a conincidence but can no longer get iTunes to work.  hitting the play button has no affect.  Looking at the sound system preferences it shows no output devices and the mute button is ticked and greyed ou