prevent dublicate Trigger

Hello
I need to create a trigger for the table of appointments that will prevent duplication of the appointment. It sits on two fields, the date and time if both exist already it should give an error.
I went to create the trigger step by step in the apex
but I'm lost in the body of the trigger...

Thank you

Do not write a trigger. You want to check the uniqueness? Then use a unique key constraint on your table with the appropriate columns. When a record is inserted with already existing unique values, oracle will throw an error: ORA-00001: unique constraint (constraint_name) violated

You could then treat errors using the apex_error package.
For an example look at blog of Patrick Wolf or Google or search the forums!

Tags: Database

Similar Questions

  • How to avoid this error in transfer

    I created the trigger below and once created it is not allowing me to insert rows in the employees table. I would like to know where it gives an error.

    CREATE OR REPLACE TRIGGER update_employees 
    AFTER INSERT ON employees 
    FOR EACH ROW 
    BEGIN 
    UPDATE employees SET    hire_date = sysdate WHERE  employee_id = :new.employee_id; 
    END update_employees; /

    I want to insert an employee details and must update the date of hiring such as sysdate after insertion.

    Please let me know how to proceed.

    One way, we can make the default for hiredate as sysdate. But how with this triggers.

    Thank you

    In the document

    Trigger Restrictions on changing Tables

    A changing table is a table that is changed by a UPDATE , DELETE , or INSERT statement, or a table which may be modified by the effects of a DELETE CASCADE constraint.

    The session making the statement that triggers don't table query or modify a mutation. This restriction prevents a trigger to see an inconsistent data set.

    This restriction applies to all triggers using the FOR EACH ROW clause. Changing views in INSTEAD OF the triggers are not changing.

    When a trigger encounters a changing table, a runtime error occurs, the effects of the body of trigger and trigger instruction are cancelled, and control is returned to the user or the application.

  • Prevent the timeline to replay a second time click on the trigger

    Hello. How can I prevent the timeline of a symbol to restart when a second time the button trigger and the timeline has already run. I have a line that grows when I click on the button and I want to keep it as. When I click on the button again the line jumps to its original size.

    Thank you

    Add a variable on the scenario of the symbol.

    var a = 0;

    then in your event click in compositionReady use:

    {sym.$('buttonName').bind ('click', funciton ()}

    {if(A==0)}

    sym.getSymbol('name').play ();

    A = 1;

    } else {}

    sym.getSymbol('name').stop ();

    }

    or you could untie your click event

    {sym.$('buttonName').bind ('click', funciton ()}

    SYM.$('buttonName'). Unbind ('click');

    sym.getSymbol('name').play ();

    }

  • Trigger to prevent the update

    I want to create the trigger that will prevent illegal updates, but for illegal data, I want to insert into another table. In order to avoid the update, I have to make an exception, but it will insert is rollback. I am aware of the autonomous transactions (put I insert a procedure which is autonomous transactions) but it seems to me like dirty way to solve the problem. Y at - it another way to prevent the update that does not throw exception. I am also against the update on the same values. Thank you!

    FilipFry wrote:
    I checked the book, so now I am on the departure, how preventing the update in the after trigger without triggering an exception?

    The only way to prevent a updated row in a trigger would throw an exception.
    You may, of course, update leave unchanged data simply by setting the new value for each column in the old value, i.e.

    CREATE OR REPLACE TRIGGER some_trigger
      BEFORE UPDATE ON some_table
      FOR EACH ROW
    BEGIN
      IF( some_condition )
      THEN
        :new.column1 := :old.column1;
        :new.column2 := :old.column2;
        ...
        :new.columnN := :old.columnN;
      END IF;
    END;
    

    This is far from ideal from the point of view redo generation and from a perspective of maintainability, but it would prevent the change of location data.

    Another trigger approach would be to create a view on the table, create an INSTEAD OF trigger on the view and then publish your updates against the view. The INSTEAD OF trigger can determine to apply changes to the base table or not, whether to discard the changes or if you want to record changes in another table.

    Justin

  • Prevention of timeout to trigger

    Hi, I use the 1427 OR with a camera NIR Goodrich 640 x 512.  We use an external source to trigger the camera and the time between two pulses of trigger is sometimes longer than the time-out for the camera (I immediately the value 2000 ms).  I would fix rather a delay of 10 seconds for the camera and I was wondering if there was some funciton of that I could call before calling the imaqGrab function to see if the camera has actually aqcuired a picture and was ready to be "seized."  Thank you!

    @FeralPhys:

    I think you can set the timeout much higher. In fact, we have several projects where the expiration time is set to infinity.

    The question is, how do stop you grabbing, while he is indefinitely stuck waiting and you must stop the application. You can do this by making a loop of parallel execution, which close the session IMAQ if stop condition. After the closure of session IMAQ, IMAQ Grab stops with an error (which you can easily manage).

    We use this approach generally with IMAQdx, but I think that it works with the same way IMAQ.

    V

  • Event trigger after the key (or scanned bar code)

    Hello

    I'm doing the following... I have a string field where the user enters a code or manually scan the code in it. Based on this code I want to trigger an event that will examine this code (string) and output to another channel (esssentially using a sequence dealing with an event). Using change of value allows to get what I want, if I were only to enter a value, but I have to be able to do that with multiple values. any help on how to address the issue would be appreciated. I'm using Labview 8.2

    Thank you!!

    TER:

    If you do a right click of your control of the chain, "Update value while typing" enabled? You may need to disable it to prevent the value of change event of firing until the entire string is entered.

    In addition, if you enable "Single-line limit", who will do the "enter" button to submit the value rather than adding a new line (which fires the value change event if you have disabled "update while typing".

  • Trigger two FPGA instances at the same time

    I have a basic FPGA code that transmits the bits of data on a serial (RS-485) bus, the code is written so that it expects in the first State of a machine to States in a single-cycle timed loop.  After a certain trigger, he begins to read a FIFO containing data and sends the data on a line of Tx.  It does this until all bits are send and then it goes back to the first State to wait for the next trigger.  The relaxation is necessary because windows must fill out first before the FPGA FIFO can start sending.

    I need two instances of this code runs, because I have two buses of com (one is redundant).  So I use the FPGA code as a Subvi and I wrote a main FPGA vi to call two separate instances of the Subvi in parallel.  A regular window vi wrote on the FIFO for bed FIFO for Rx and Tx.  No problems so far.

    The thing is I start two transmissions in 200nS of each other (Yes, nanoseconds).  Windows will write two FIFO in parallel, but the timing is 4uS apart, too long.  I tried implementing a Boolean flag in the Subvi FPGA, but windows can not write directly on the control of Subvi.  FPGA won't allow (the Write function is grayed out).  I tried to use a FIFO for a flag, but the problem is a race condition.  One of the instances is first read FIFO and he destroy.  The other can't read.  I need a common trigger point to be used by the two instances of Subvi.

    My final solution was to use a memory in the Subvi FPGA and digital control in the main FPGA vi.  Windows write in numerical order, it may because the control is in the main FPGA vi.  Inside the main FPGA, I run a timed loop that looks for digital to be zero.  If so, it writes the value into the location of the memory used by the Subvi FPGA.  After awhile, the principal wrote a zero back to memory to prevent the Subvi is restarted, as well as to write a zero for digital to reset.  This repeats, waiting for windows to write in digital again for the next transmission.

    I had to do it this way because sometimes I want to pass on the bus, and sometimes just one or the other.  Numeric values are used to determine which to pass on.  Now, the transmissions are starting to almost exactly at the same time, 1 or 2 nanoseconds apart.  But the trigger process seems very silly to me.  I was wondering if there is a better solution.  I'm pretty new to FPGA.

    tbob wrote:

    Basically, I did the same thing using FPGA memory.  Windows I am writing for a digital control that resides inside the main FPGA vi.  In the main FPGA, I write in the memory.  Inside the Subvi FPGA, I read the brief and decode the value to use either one or the other or both buses.  After fool with it for awhile, because reading Memeory needs to use a shift register (probably because it takes a whole cycle of clock), I had to work.  The two bus trigger at the same time.  I guess it's not really important if I use a FIFO or if I use the memory.  The main problem is that I write Windows at the hand of FPGA, then the hand of FPGA for the Subvi FPGA.  Then the time is right for what is the Subvi is.

    There are some advantages to the use of two FIFO on your approach.  First of all, you don't have the change of register for the memory location.  Secondly, we should not worry that VI is responsible for compensation to the memory location, or do, you run the risk that one of your subVIs run twice, or not at all, if the memory is not erased at the right time.  Perhaps most important, you'll save yourself space on the FPGA because you will not need arbitration - the additional code that is added when two parts of the FPGA try to access the same resource at the same time.  In your case, both instances of the Subvi access the memory block at the same time, so the FPGA compiler adds additional logic to avoid conflict.  If only read you the memory block in one place and just write it in one place (reading and writing can be different loops where subVIs) there is no need for arbitration.  Using two FIFOs, you can keep independent and avoid the conflict resolution code.  See the help for the "arbitration" for more details.

  • Can we prevent the popup Scheduler task Service at the start of the system for a scheduled task to run periodically?

    When I have any task scheduled to run periodically (for example, daily, weekly), the Task Scheduler Service dialog box always appears on the logon screen if the computer was turned off at the time of day the task should run. From my experiences, it seems as the process that determines a spot missed his scheduled time does not consider that the PC is turned off. There seems to be no way to prevent this. Even when a task is scheduled to run at the system startup and periodically, the dialog box appears when the login screen appears.

    This analysis is correct?

    I have three tasks in Task Scheduler. I didn't know anything about the task scheduler until I started having the popup. The first time I looked at Task Scheduler these three tasks have been implemented as follows.

    Adobe Flash Player Updater - Annex: every 1 hour (s) 03:05 for 24 hour (s) on every day...

    GoogleUpdateTaskMachineCore - Annex: Run when the user login

    GoogleUpdateTaskMachineUA - Annex: every 1 hour (s) 20:51 24 hour (s) on every day...

    I have no idea how or when it has been implemented in this way, but I only started to receive this dialog box by the end of 2011. Would it have happened during an Adobe Flash Player update or update of Google?

    I changed the calendar. I've now set up three tasks to run at startup of the system. The popup appears now. Is there a reason why I have to trigger these tasks once per hour?

    CSF

    You don't need these tasks scheduled at all.

    You can go to each site and look for updates when you want.

    If you have installed google something he will continue to try to catch up, and if you have installed adobe you can disable automatic updating.

  • Impossible to prevent (dfrgntfs.exe) Disk Defragmenter to run during System Idle

    How can I prevent the Disk Defragmenter Windows (dfrgntfs.exe) tool to launch automatically when my Windows Vista machine is idle?  I defragment my hard disk with IObit Smart Defrag software and do not want the Windows defrag utility constantly re-organization of the files on my hard drive once I optimized the placement of files with Smart Defrag.

    I checked the Windows Disk Defragmenter tool (start |) All programs | Accessories | System Tools | Disk Defragmenter) and regular defrags are disabled (i.e., the checkbox "Run on a schedule" is disabled).  I checked Windows Task Scheduler (start |) Administrative Tools | Task Scheduler | Task Scheduler Library | Microsoft | Windows | Defrag) and the task of ScheduledDefrag also appears as disabled here.

    My hard drive is formatted with the NTFS file system and my Norton Internet Security 2010 software Norton tasks window shows that dfrgntfs.exe starts about 30 minutes after my system goes into "idle" mode.  Is there another tool of Windows running in the background (for example, the Windows search indexing) which can be automatically trigger the Windows Disk Defragmenter?

    I hope that there is a simple configuration change or registry change that will stop the Windows Disk Defragmenter to run while it is idle, but still lets me run a manual defragmentation if I want to do.

    ___________

    MS Windows Vista Home Premium 32 bit SP2
    Internet Explorer 8.0
    NIS 2010 c. 17.7.0.12
    HP Pavilion dv6835ca Intel Core2Duo processor T5550 1.83 GHz, 3.0 GB of RAM, NVIDIA GeForce 8400 GS

    Lorien - one:

    Thanks for the quick response.  I'm failry certain that the ScheduledDefrag task in Windows Task Scheduler is not the culprit.  This task (and trigger) show that off and the task history shows that a regular defrag last ran on my system there is, over 2 years which is the time that I have disabled the checkbox "Run on a schedule" in the Windows Disk Defragmenter tool.

    I found a post today in the My Digital Life Forums (http://forums.mydigitallife.info/threads/1910-DfrgNtfs.exe-in-Vista-SP1) which suggests that there is a Vista boot optimization process that runs defragments dfrgntfs.exe whenever you reboot your system, even if in the application are disabled.  Is recommended that a response to stop dfrgntfs.exe to run after every reboot:

    1. open the Windows registry (run > regedit)
    2. go to path
    3. change the "Enable" key of Y to N

    I found information on the Start function to optimize on the Microsoft TechNet Library website (http://technet.microsoft.com/en-us/library/cc778290 (WS.10) .aspx) which States that "Windows automatically optimizes for the optimization of startup file location. This optimization happens automatically if the system is idle for 10 minutes. Start optimization improves the start-up time to locate the startup files in contiguous clusters on the volume, reducing the movement of the head of the disc during playback of the volume".  I have no idea if third-party defragmenters like IObit Smart Defrag or Defraggler of Piriform can optimize the placement of these Windows startup system files or Boot Optimization provides some additional benefits to the performance of the system.

    I don't know if the Boot Optimization function is actually the cause of my origins unscheduled defragments but it's the only reasonable explanation I could find.  When these "silent" defragments happen on my system, they occupy more than 50% of my CPU and will last more than an hour (or until my system is idle).  I had problems with my system of freezing after it goes into idle mode (i.e., move my mouse or using the keyboard has no effect and I have to do a re-difficult start by turning off my laptop) and I begin to suspect that if this unscheduled defragmentation runs along with other tasks in the background (for example (, my daily QuickScan in Norton anti-virus) that a page conflict or lack of system resources could freeze my computer.

    I would appreciate hearing of a person who can confirm that the Boot Optimization function will trigger unforeseen defragments when Vista is idle or knows if the Boot Optimization function is all real benefits if you use a third-party Defragmenter.

  • How can I trigger an action on the click event of wheel with ApplicationMessages?

    Hello world

    I've recently implemented ApplicationMessage provided for JDE 4.6.0. It allows developer create custom messages in the global Inbox of messages about its application. It works fairly well but I threshold have question though: when I click on my ApplicationMessage in overall Inbox of messages I get this pop-up: 'no messages not configured service. "You will be able to save draft".

    I want to trigger an action (updates my request on the foreground for ie) on this event and prevent this pop-up to appear. I have not found a way to do good.

    Somone have never worked with ApplicationMessage and managed to trigger an action on the click event of wheel?

    Thanks in advance.

    PS: A less important but another question: my ApplicationMessage time in the overall message Inbox is displayed this way: 10:... instead of 10:45 for example. And yet I didn't understand what was the reason of this bad view (it seems that the date is too long or something).

    I thought about it: you must register at least an ApplicationMenuItem for your ApplicationMessage, the action triggered by this menu item will be the same if you click your ApplicationMessage with the wheel.

  • Apex 5 refresh action prevent IR

    Hello

    We must prevent the search and update the function of an international registration based on the validation of the input elements.

    In earlier versions, we used to validate the entry points of the page and if everything was ok and then refresh the IR with the greport.

    But with Apex 5 we have no idea to stop processing research and update the IR function. Even trigger us the fuction (jquery) validation error or write DA on before the refresh of the IR function, I have found no way to stop treatment once you press the button 'go '.

    Any help is very appreciated,

    Tolga BODUR

    Hello

    You should indeed be able to use a DA set fire "before Refresh' of the IR region, you must also use the action type"Cancel the event", which will prevent the report to be refreshed. This is possible under certain conditions according to your validation criteria, you can define in the when > Condition of your DA.

    Kind regards

    Anthony.

  • GotoWorkspace in after Logon trigger

    Our users want to switch automatically to the last workspace they use when they connect.  Because they can use one of several applications, I decided to put this feature in a logon after tripping on the database.

    The trigger, the tables and procedures are owned by the user WM_UTILS:

    ----------------------------

    create table wm_utils.recent_user_workspaces

    (username varchar2 (30 bytes) primary key

    nom_espace_de_travail varchar2 (30 byte));

    create or replace procedure wm_utils.goto_last_workspace authid current_user as

    pragma autonomous_transaction;

    last_workspace varchar2 (30);

    Start

    last_workspace: = get_last_workspace();

    If (last_workspace is not null) then

    dbms_wm. GotoWorkspace (last_workspace);

    end if;

    commit;

    end;

    create or replace procedure wm_utils. set_last_workspace (workspace in varchar2) as

    Start

    merge into recent_user_workspaces

    using double on (username = user)

    When not matched then insert (username, nom_espace_de_travail) values (user, workspace)

    when matched, then update set nom_espace_de_travail = workspace;

    end;

    create or replace function wm_utils. get_last_workspace return varchar2 as

    workspace varchar2 (30);

    Start

    Select nom_espace_de_travail

    in the workspace

    of recent_user_workspaces

    where username = user;

    Returns the workspace;

    exception

    When NO_DATA_FOUND then

    Returns a null value.

    end;

    create or replace procedure wm_utils.goto_workspace (workspace in varchar2) authid CURRENT_USER as

    PRAGMA AUTONOMOUS_TRANSACTION;

    Start

    dbms_wm. GotoWorkspace (workspace);

    set_last_workspace (Workspace);

    commit;

    end;

    create or replace trigger wm_utils.on_login

    After logon on database

    Start

    goto_last_workspace(); 

    exception

    while others then

    null;

    end;

    ------------------------------------------------------

    Call wm_utils.goto_workspace instead of dbms_wm. GotoWorkspace if they want to remember their choice for their next login.

    The problem is that this operation fails with the error "ORA-20073: sufficient privileges to ACCESS the workspace: 'TEST_WORKSPACE'."  It is a work space owned by the user attempting to log on, but there no privileges granted explicitly.  The user can call wm_utils.goto_last_workspace () to be identified and it works.  Y at - it something on the way in which work orders that would prevent from working in a trigger AFTER logon?

    Hello

    Triggers have the same privileges as a DEFINER procedure/function.  So, once the wm_utils.on_login trigger is executed when a user connects to the database, all the procedures performed as a result of the trigger are executed with the privileges of the wm_utils schema.  This includes even those defined as authid current_user, since at this moment in time wm_util is essentially the user that executes the procedure.  So, you can create a DEFINER rights procedure in the scheme of each user to manage dbms_wm of execution. GotoWorkspace which will remove the privileges of the user running, or give the privilege of system ACCESS_ANY_WORKSPACE wm_utils schema using dbms_wm. GrantSystemPriv.

    Kind regards

    Ben

  • Update of several rows of the same table using trigger

    Hello

    I have the following table

    ---------------------------------------------------------------------------------------------------------

    CREATE TABLE ATT_PERMISSIONS
    (
    DATE OF PRMONTHYR,
    EMPIDNUMBER (10)DEFAULT VALUE 0,
    FROMDATETIMEDATE,
    TODMTFDATETIMEDATE,
    NUMBER OF PERMMINS (3),

    SSLINASTRETCH NUMBER (3).

    PERMATTINELIGIBLENUMBER (1)DEFAULT VALUE 0
    );

    ------------------------------------------------------------------------------------------------------

    I want to update the column PERMATTINELIGIBLE in the same table when each line is inserted.

    I created following trigger for that

    CREATE OR REPLACE TRIGGER SSL_AFTER_UPDATE AFTER UPDATE ON ATT_PERMISSIONS

    FOR EACH LINE

    BEGIN

    Update ATT_PERMISSIONS set PERMATTINELIGIBLE =

    (

    SELECT THE CHECK BOX

    WHEN PERMMINS < = 60

    or

    (

    PERMMINS < = SSLINASTRETCH

    AND

    COUNT (CASE WHEN PERMMINS = 0 THEN NULL OTHERWISE 1 END)

    COURSES (PARTITION BY empid, prmonthyr) < = 1

    )

    THEN 1

    0 OTHERWISE

    END

    FROM ATT_PERMISSIONS where prmonthyr =:new.prmonthyr, empid =:new.empid

    ) where prmonthyr =:new.prmonthyr, empid =:new.empid;

    END;

    ---------------------------------------------------------------------------------------------------

    That is to say.

    When a row is inserted the PERMATTINELIGIBLE of all records for this employee for the month is recalculated.

    There would be only two or three records for an employee for a month.

    PERMMINS is the number of minutes to use as short leave.

    If it is less than 60 is eligible for the bonus to attendance for this employee.

    If this isn't normally the date is not eligible for the attendance for this employee premium.

    but an exception is that if a short leaves of DISP employee allowed a month (IE. ( SSLINASTRETCH ) in a straight line, IE. one day, that day is eligible for the bonus of presence.

    That is to say. Why the number of short leaves in a month is taken. If it's one and done minutes use is lower to SSLINASTRETCH, then the day is eligible for the attendance bonus.

    But when I try to create the trigger I get error, PL/SQL: ORA-00907: missing a right parenthesis.

    Help, please

    I use oracle 10g

    I want to update the column PERMATTINELIGIBLE in the same table, when each row is inserted.

    No - you do NOT want to do in a trigger.

    You cannot query the same table that the trigger is activated on. -C' is a MUTANT and you will get an exception.

    When a row is inserted is recalculated to the PERMATTINELIGIBLE of all the records for that employee for that month.

    There would be only two or three records for an employee for a month.

    PERMMINS is the number of minutes to use as short leave.

    If it is less than 60 is eligible for the bonus to attendance for this employee.

    If is not normally the day is not eligible for the premium of attendance for this employee.

    but an exception is that if a short leaves of DISP employee allowed a month (IE. SSLINASTRETCH) in a straight line, IE. one day, that day is eligible for the bonus of presence.

    That is to say. Why the number of short leaves in a month is taken. If it's one and done minutes use is less than SSLINASTRETCH, then the day is eligible for the bonus of presence.

    But when I try to create the trigger I get error, PL/SQL: ORA-00907: missing a right parenthesis.

    You can not do in a trigger. Even if correct you this error of syntax, you will get the exception that I mentioned above.

    Oracle is a multi-user system. Other users can modify the same table that you use.

    So even if you could try to interview "all the records for this employee" some of them may be locked if other users access them. Also, an insert statement could try to insert two rows for an employee and the trigger could not have seen the other lines still.

    If you want to work with data SETS (all records for an employee), you must write the PL/SQL code that LOCKS all lines updated to prevent others to interfere.

    Then you make your operations but NOT in a trigger. Perform inserts and then use an UPDATE query to set this value.

    Then VALIDATE to unlock the lines.

  • Prevent the owner of the schema using development tools

    Hello world

    We are doing some tasks to meet the PCI DSS requirements. One of them is preventing the schema owner to log in using development tools (TOAD, sqlplus, plsqldev, SQL Developer...). I found a solution here:

    http://kamranagayev.com/2009/10/04/block-developers-from-using-Toad-and-other-tools-on-production-databases/

    But as comment said, if we change the name of the .exe file, we can easily connect. I thought to do info = module, no program info. I tried with no success. I read somewhere that in after logon, the client info trigger is not set completely. So that we can't get info module exactly after logon trigger (I tried and I have seen this module was same as program interviewed since the session$ v).

    Another comment suggested that we allow some programs to connect instead of refuse many unauthorized tools. I think it is a good idea. But I wonder if some guys know rename tool dev as our authorized tools and it can connect.

    If anyone has any ideas or solutions, please help me. Thank you.

    One solution is to use two schemas - detail a. has no privs assigned to it (not even CREATE SESSION), but contains all of the objects (tables, indexes, views, code, etc.). Diagram B does not all objects, but given privileges to operate on the objects belongs to priv a. withdrawal CREATE SESSION from scheme a scheme b (in for example Prod) will achieve your requirement.

  • prevent create them records shaped detial

    Hello to all the


    I have 2 master and detail blocks

    1' st a block on the ground (numberInstallment_)

    2' nd block's detail is tubular

    I need to prevent to create records that are greater than the number inserted into (Installment_s number)

    I write trigger to get the number of rows and compare with (Installment_ s number) and record when a new instance of the record

    But it does not create records exceeds the (s numberInstallment_ )

    What is the solution or trigger appropriate?

    I've used triggers:

    When create folder

    When new record_instance

    But it's not working?

    Trigeer

    declare

    cursor c_new_recored is

    Select count (*)

    of STD_TAKISAT_STUD_DETIAL

    where

    user_stud_id =: STD_TAKISAT_STUD. USER_STUD_ID

    and TKSAIT_ID =: STD_TAKISAT_STUD. TKSAIT_ID;

    v_new_recored number (1);

    Start

    commit_form;

    Open c_new_recored;

    extract the c_new_recored in v_new_recored;

    If v_new_recored >: STD_TAKISAT_STUD. APPROVER_NUMBER then

    RAISE form_trigger_failure;

    message ("?") E C?? ? II C? C? C? ?? C? ??? I C? C? C?');

    message ("?") E C?? ? II C? C? C? ?? C? ??? I C? C? C?');

    RAISE form_trigger_failure;

    end if;

    close c_new_recored;


    Concerning

    Ibrahim

    Thank you Almighty God swt, something works for you.

    Add

    previous_record;

    just before

    Raise_form_trigger_failure;

    Hope it will work.

    Not tested.

    Hamid

Maybe you are looking for