Page 1 of 1

IDENTITY_INSERT

Posted: Tue 28 Aug 2012 15:06
by Tomasz Andrzejewski
Hello,

Is there any option that allow me to set identity column value this way:

Code: Select all

var
  FQuery: TUniQuery
begin
  FQuery :=  TUniQuery.Create(Self);
  FQuery.SQL.Add('SELECT * FROM MyTable WHERE 1=0');
  FQuery.Connection = ...;
  FQuery.Open;
  FQuery.Append;
  FQuery.FieldByName('Id').ReadOnly := False;

  FQuery.FieldByName('Id').Value = 10;
  FQuery.FieldByName('Name').Value = 'AAAAAA';
  
  FQuery.Post;
Where:
Id - identity column
Name - additional fields.

I want to use FieldByName and TUniQuery to add record with identity specified.
I get error that Identity_insert is not set for table e.g test.

Re: IDENTITY_INSERT

Posted: Wed 29 Aug 2012 07:16
by Tomasz Andrzejewski
solved.

Code: Select all

var
  FIdentityQuery: TUniQuery;
begin
  FIdentityQuery := TUniQuery.Create(Self).
  FIdentityQuery.SQL.Add('SET IDENTITY_INSERT [TableName] ON');
  FIdentityQuery.Connection := ...
  FIdentityQuery.Execute();

  // there you can go with normal post method
  FDataQuery.Post;
  RecordId := FDataQuery.FieldByName('TableId').Value;
end;