Wrong behavour FOR <select_stmt> [AS CURSOR cursorname] with next update and 
delete
-----------------------------------------------------------------------------------

                 Key: CORE-5794
                 URL: http://tracker.firebirdsql.org/browse/CORE-5794
             Project: Firebird Core
          Issue Type: Bug
    Affects Versions: 3.0.3
            Reporter: Sergey Borisov


CREATE EXCEPTION TEST_EXCEPTION 'TEST';
CREATE TABLE TEST_TABLE (
    ID   INTEGER,
    VAL  INTEGER
);
INSERT INTO TEST_TABLE (ID, VAL) VALUES (1, 10);

SET TERM ^ ;
CREATE OR ALTER TRIGGER TEST_TABLE_BD FOR TEST_TABLE
ACTIVE BEFORE DELETE POSITION 0
as
begin
  IF (OLD.Val >0) THEN EXCEPTION TEST_EXCEPTION 'It is forbidden to delete row 
with Val>0 (ID = '||Coalesce(OLD.ID, 'null')||', 
Val='||Coalesce(old.Val,'null')||')';
end^

Execute block
as
declare variable curVal integer;
declare variable curID integer;
begin
  for select ID, VAL
  from TEST_TABLE
  where VAL>0
  into curID, CurVal
  as cursor TmpCursor
  do begin

    update TEST_TABLE
    set Val=0
    where current of TmpCursor;

    --This expression must be executed without exception (because now Val=0), 
but an error occurs.
    delete from TEST_TABLE
    where current of TmpCursor;
  end
end^

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to