0

我有一个 MS SQL 数据库。

在我的一个字段LotNumber中,我将默认值设置为[dbo].CalculateJulianDate,它是一个标量值函数,它采用当前日期并创建一个儒略日期格式的批号。

当我使用 SSMS 将值插入到表中时,会正确填充该值,用 LotNumber 替换空值。

我正在尝试在 Visual Studio 2010 中为数据库创建一个 Visual Basic Winforms 前端。我设置我的数据源,将详细信息视图拖到表单上,我可以查看数据、编辑数据和删除数据。但是,当我尝试插入新数据时,它会用NULL填充LotNumber字段。

我不明白为什么当从我的 winForms 应用程序中输入数据时,MS SQL 不使用默认值而不是NULL值。我的印象是,在 SQL 模式中设置默认值的目的是用默认值替换NULL值。

插入的代码是自动生成的,我似乎无法在我的应用程序中找到它。唯一可见的代码是:

Private Sub Dt_InventoryBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles Dt_InventoryBindingNavigatorSaveItem.Click
Me.Validate()
Me.Dt_InventoryBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.CSRPRDDataSet)
End Sub

有谁知道为什么 SQL Server 没有像预期的那样插入默认值?如何从我的应用程序中获取要填充的默认值?

4

2 回答 2

3

当您根本不设置该字段值时,将在 SQL Server 中使用默认值。如果将其设置为 NULL,则它保持设置为 NULL。如果从 INSERT 语句中删除该字段,则将使用默认值。

于 2014-08-30T02:53:55.010 回答
1

INSERT对 TableAdapter 进行自定义查询,请右键单击您的 Table Adapter,选择 Add Query,查询向导将出现。选择“使用 SQL 语句”并选择“插入”作为查询类型。

于 2014-08-30T04:32:01.057 回答