BUG: SEM Scripts Are Null for Niladic Functs. Used as Defaults (151052)



The information in this article applies to:

  • Microsoft SQL Server 6.0
  • Microsoft SQL Server 6.5

This article was previously published under Q151052
BUG#: 14949 (6.00)

SYMPTOMS

An insert to a table that has niladic functions as defaults will put null for the default if the field accepts null, instead of inserting the system generated default value.

CAUSE

This problem occurs only if the table is created using Manage Tables and the script is generated and run using Enterprise Manager.

WORKAROUND

Remove the appended null before running the script.

STATUS

Microsoft has confirmed this to be a problem in Microsoft SQL Server versions 6.0 and 6.5.

MORE INFORMATION

If the Manage Tables feature is used to create the table with the niladic function as default and an insert is performed, it works and the default is fired. However, if the script for this table is created and run, then the same insert operation will fail to fire the default and put (null) for the column that had the default.

In the case of an upgrade from version 6.0 to 6.5, even if tables are not recreated, but due to the procedure plan for default being recreated, niladic function will start returning NULL. To work around this, edit syscomments to remove the NULL from the functions.

If a column is defined as not null and has a default of a niladic function (say user_name() ) on a 6.0 database and its upgraded to 6.5, default will try to insert null into the column resulting in following error:
515 : Attempt to insert the value NULL into column '%.*s', table'%.*s'; column does not allow nulls. %s fails.

Modification Type:MinorLast Reviewed:3/14/2005
Keywords:kbBug KB151052