tadoquery post:"无法使用null"更新非可空列在标识栏上

时间:2014-04-18 07:43:04

标签: sql-server delphi post ado identity

我正在尝试在旧版delphi项目中使用带有MS SQL Server的TAdoquery。 数据集包含一个表示SQL表中标识列的字段。它有AutogenerateValue = arAutoInc和ProviderFlags [pfInWhere, pfInKey]。它还有Required = false

执行adoquery.Append后,我预填字段并尝试执行adoquery.Post,但收到此错误:     Non-nullable column cannot be updated to Null

所有非可空字段在发布之前都设置为非null,因此标识列是唯一的可疑项。 TADOQuery没有连接(简单的Select * from my_table),但它查找字段和计算字段,可能为空。对于查找字段和计算字段,我删除了提供程序标志,以确保这些字段不会出现在insert或update语句中。

标识字段在发布之前立即为NULL,我看不到在Profiler中服务器上没有插入命令,而是我刚刚收到此错误。

  • 是否可以预览由Tadoquery生成的sql语句以插入新行?

1 个答案:

答案 0 :(得分:0)

我解决了,问题当然与身份栏无关。 最初的sql是select * from myTable,这意味着它还加载了几个未绑定到我的DBGridEh中任何网格列的额外列。 用我需要INSERT工作的列的明确列表替换*之后。