Hi,
When someone set a default value for a column and set NOT NULL at the
same time, the query could fail if the table already contains NULL
values for this column. This patch adds an UPDATE statement to put the
DEFAULT value in this column for all NULL values (but only when you SET
NULL and SET DEFAULT the column at the same time).
I've done this patch for a friend but I don't quite like this patch
because of its behaviour. It doesn't warn the user. I think it would be
better to show a dialog telling that an UPDATE statement will be
executed because otherwise the whole action could fail.
So here are some questions :
* do you think this patch is worth it ?
* do I need to show a confirmation dialog ?
* do I need to check first if there's NULL values on this column ?
Thanks.
Regards.
--
Guillaume.
<!-- http://abs.traduc.org/
http://lfs.traduc.org/
http://docs.postgresqlfr.org/ -->
Index: dlgColumn.cpp
===================================================================
--- dlgColumn.cpp (révision 5962)
+++ dlgColumn.cpp (copie de travail)
@@ -252,6 +252,17 @@
sql += wxT(";\n");
}
+
+ if (txtDefault->GetValue() != column->GetDefault()
+ && !txtDefault->GetValue().IsEmpty()
+ && chkNotNull->GetValue() != column->GetNotNull()
+ && chkNotNull->GetValue())
+ {
+ sql += wxT("UPDATE ") + table->GetQuotedFullIdentifier()
+ + wxT("\n SET ") + qtIdent(name) + wxT("=") + txtDefault->GetValue()
+ + wxT("\n WHERE ") + qtIdent(name) + wxT(" IS NULL;\n");
+ }
+
if (chkNotNull->GetValue() != column->GetNotNull())
{
sql += wxT("ALTER TABLE ") + table->GetQuotedFullIdentifier()