----------
From: mwendel@marketguide.com[SMTP:mwendel@marketguide.com]
Sent: Tuesday, January 27, 1998 10:38 AM
To: informix-list@rmy.emory.edu
Subject: INSERT INTO Informix with Perl DBI
When doing an INSERT INTO using Perl DBI is there a limit of the number of
rows that can be inserted at one time?
Yes, No, Maybe. If you use INSERT INTO SomeTable VALUES(...) then the limit is
one row per time you execute the statement. If you use INSERT INTO SomeTable SELECT ...,
then the limits are less well defined, depending on the amount of disk space you've got configured
and the number of locks, and so on.
Or a max of rows x columns you can
do INSERT INTO with a single cursor or subroutine?
There isn't any limit that you wouldn't hit with a plain ESQL/C program AFAIK. You're
problem is likely to be your system configuration; if you're using SE, then the number of
locks allowed by the kernel (rebuild it with an increased number of locks), or the LOCKS
parameter (check actual name) in your $ONCONFIG file if you're using OnLine. You
should also check your logic, and in particular, your transaction sizes. Maybe you should
be doing some intermediate COMMIT WORK operations.
I keep getting the following messages when I attempt to do updates to the
tables I orignially populated using INSERT INTO:
SQL: -240: Could not delete a row.
ISAM: -134: ISAM error: no more locks
I know I can correct this problem by dropping and recreating the table,
but that isn't very effective nor good Database management.
Is your database a MODE ANSI database? If it is, you're always in a transaction.
How many rows are you processing when you run into this problem?
Yours,
Jonathan Leffler (j.leffler@acm.org) #include <redirect.h>