|
This is a multipart message in MIME format.
--
[ Picked text/plain from multipart/alternative ]
You tell me - here's the program (I didn't write it, just helping one of
our programmers get thru it):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
EXEC SQL INCLUDE SQLCA;
long nOldValue = 0;
long nNewValue = 0;
printf("Start\n");
EXEC SQL SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
printf("After SET TRANSACTION SQLCODE=%d\n", SQLCODE);
EXEC SQL DECLARE C1 CURSOR FOR
SELECT last_auto_number
FROM cms/AUTONUMBER
WHERE table_name = 'CASE'
FOR UPDATE;
printf("After SELECT SQLCODE=%d\n", SQLCODE);
EXEC SQL OPEN C1;
printf("After OPEN CURSOR SQLCODE=%d\n", SQLCODE);
EXEC SQL FETCH C1 INTO :nOldValue;
printf("After FETCH SQLCODE=%d\n", SQLCODE);
printf("Fatched %d\n", nOldValue);
nNewValue = nOldValue + 1;
EXEC SQL UPDATE cms/AUTONUMBER
SET last_auto_number = :nNewValue
WHERE CURRENT OF C1;
printf("After UPDATE AUTONUMBER SQLCODE=%d\n", SQLCODE);
EXEC SQL CLOSE C1;
printf("After cursor CLOSE SQLCODE=%d\n", SQLCODE);
EXEC SQL COMMIT;
printf("After COMMIT SQLCODE=%d\n", SQLCODE);
// Here's where the SQLCODE -907 happens:
EXEC SQL UPDATE cms/"CASE"
SET case_id = :nNewValue
WHERE case_id = 0;
printf("After UPDATE CASE SQLCODE=%d\n", SQLCODE);
return 0;
}
Tom Hightower
Solutions, Inc
http://www.simas.com
Joe Reinhardt <JReinhardt@Lance.com>
Sent by: midrange-l-admin@midrange.com
03/13/02 11:04 AM
Please respond to midrange-l
To: "'midrange-l@midrange.com'" <midrange-l@midrange.com>
cc:
Subject: RE: SQLCODE -907
Since you are doing *after *insert does your trigger program then read in
the record to do the change?
Joe Reinhardt
-----Original Message-----
From: tomh@simas.com [mailto:tomh@simas.com]
Sent: Wednesday, March 13, 2002 11:58 AM
To: midrange-l@midrange.com
Subject: RE: SQLCODE -907
This is a multipart message in MIME format.
--
[ Picked text/plain from multipart/alternative ]
Not a red herring, but doesn't really help either. The trigger time is
*AFTER, trigger event is *INSERT. We use SQL to 'INSERT INTO' the file,
which causes the trigger to run, which in turn runs the program, which
updates a field in the row we're inserting.
On the SQL 'INSERT INTO' - if we use 'WITH CS' (isolation level: row is
locked until end of current transaction) at the end of it, we get the
SQLCODE -907. If we leave the 'WITH CS' off, we get no error and the
files are updated like we want but a ROLLBACK does nothing.
What we want is to set an isolation level and not get the -907, and be
able to do a ROLLBACK. How do we accomplish that? Do I need to post the
C program to show how the files are being updated?
Tom Hightower
Solutions, Inc
http://www.simas.com
Buck Calabro <Buck.Calabro@commsoft.net>
Sent by: midrange-l-admin@midrange.com
03/13/02 10:27 AM
Please respond to midrange-l
To: midrange-l@midrange.com
cc:
Subject: RE: SQLCODE -907
Tom wrote:
>When we looked up -907, we found that it said
>something like "attempt to update same row twice".
DSPMSGD SQL0907 says that a trigger fired which tried updating the same
row.
Does that help, or is it a red herring?
--buck
_______________________________________________
_______________________________________________
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@midrange.com
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/cgi-bin/listinfo/midrange-l
or email: MIDRANGE-L-request@midrange.com
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
_______________________________________________
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@midrange.com
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/cgi-bin/listinfo/midrange-l
or email: MIDRANGE-L-request@midrange.com
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.