I am using a shell script to copy some table records into PostgreSQL database. The logic steps are:
1. set default value for table id
2. load some large records into the table
3. drop the id definition
The actual PostgreSQL commands are:
ALTER TABLE warngrid ALTER COLUMN id SET DEFAULT (nextval('warngrid_seq')* 10)+1;
COPY warngrid FROM 'warngrid.csv' CSV HEADER;
ALTER TABLE warngrid ALTER COLUMN id DROP DEFAULT;
For the first time, these operation execute fine. Then I do these steps:
4. delete all the records in the table
5. rerun the shell script to copy records.
Then, the ALTER statement in step 1 hanging there. I did check the lock state of the warngrid table, it says the process created by the ALTER statement hold an "AccessExclusiveLock" on the table.
I wonder if PostgreSQL got some internal mechanism which prevent a table id field being altered many times when there are some pre-existed records in the table? or something in PostgreSQL that I am not aware of cause the problem.
Thanks for the help!
It's simple! Sell your car for just $30 at CarPoint.com.au
pgsql-interfaces by date
|Next:||From: Dennis Wang||Date: 2008-01-11 00:40:07|
|Subject: URGENET: ALTER statement exectuation hangs when it is executed
multiple time on a table|
|Previous:||From: Fred Stevens||Date: 2008-01-10 18:40:39|
|Subject: plperl fails to compile PostgreSQL v8.2.6|