Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: ENABLE NOVALIDATE behaviour bug
One thought about adding a column with a default: the table has to be locked while every row is updated, and if the update fails, you have a massive rollback.
If this is not something you can spare the time for, you might still want to do something like the following:
add column
add constraint disable novalidate
update the column where null in batches - committing
add the default
enable the constraint novalidate
update any columns still null
validate the constraint
Regards
Jonathan Lewis
http://www.jlcomp.demon.co.uk/faq/ind_faq.html The Co-operative Oracle Users' FAQ
http://www.jlcomp.demon.co.uk/seminar.html Optimising Oracle Seminar - schedule updated May 1st
Thanks to Tanel and Richard for explaining this. I know realise that I misunderstood the meaning of "novalidate" - I was hoping it might mean "trust me Oracle, I know it to be true" but it can only mean "from today on, enforce this - who knows about the past". I should have realised that.
I'll take Tanel's advice of creating the column with a default. This is yet another area I wasn't sure about... I wasn't positive that a default value would be applied to existing rows since adding a default clause to a pre-existing column doesn't do this. So I've asked one question and received two answers - Well done and thankyou.
Regards,
Mark.