当字段在TQuery中具有默认值时,插入或追加寄存器



我想在查询中插入或追加,该查询在数据库中具有默认值的列,但是当从Delphi中包含寄存器时,该列未设置。

我想在改变我的附加和插入的子句,而不是我删除字段的默认值和null,但我不知道如果它是简单的方法。

我的表是:

创建表Id整数不为空,字段整数默认值10

);

我的Delphi代码查看是否插入正确的值是:

Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM TableTest order by ID');
Query1.Open;
Query1.Last;
ID := Query1.FieldByName('ID').AsInteger;
inc(ID);
Query1.Insert;
Query1.FieldByName('ID').AsInteger := ID;
Query1.Post;
inc(ID);
Query1.Append;
Query1.FieldByName('ID').AsInteger := ID;
Query1.Post;
Query1.ApplyUpdates;
Query1.CommitUpdates;

您没有指定使用的SQL Server,但正如GabrielF所说的

执行

时的

insert into table (columnna, columnB) values (10, NULL)

无论数据库默认设置为10,columnB的值都将为NULL

要确保字段值将默认设置,您可以使用TQuery OnNewRecord事件作为:

procedure TDataModule1.Newrecord(DataSet: TDataSet);
begin
  Query1.FieldByName('FIELD').AsInteger := 10; //SET DEFAULT
end; 

或者如果你想在Delphi中使用"纯"SQL(如IbExpert Script executive),你可以使用:

Query1.Sql.Text := 'Insert into table (ID) values (<value>)';
Query1.ExecSql;

在这种情况下,字段' field '中没有值,将使用默认值。

相关内容

  • 没有找到相关文章

最新更新