我正在使用firebird数据库,并尝试将id列重新启动为AUTO_INCREMENT

删除后的字段
像下面的代码:

  SQLQuery1.Close;
  SQLQuery1.SQL.Text :='DELETE FROM MY_TABLE';
  SQLQuery1.ExecSQL;
  //---------------------------------------------------------
  SQLQuery1.Close;
  SQLQuery1.SQL.Text :=
    'ALTER TABLE MY_TABLE ALTER COLUMN ID AUTO_INCREMENT =1';
  SQLQuery1.ExecSQL;


但是我不能那样做。仅DELETE SQL命令有效。
以及TRUNCATE是如何工作的?
以下代码在delphi中也不起作用:

  SQLQuery1.Close;
  SQLQuery1.SQL.Text :=
    'TRUNCATE TABLE MY_TABLE';
  SQLQuery1.ExecSQL;


谢谢

最佳答案

删除所有记录后,请尝试以下代码,

  SQLQuery1.Close;
  SQLQuery1.SQL.Text := 'SET GENERATOR ID TO 1';
  SQLQuery1.ExecSQL;


请注意,1将是生成器的当前值!您可能需要将其设置为0。

如果不起作用,请尝试在firebirdnews中发布此方法

参考:https://www.firebirdnews.org/rfc-truncate-table-in-firebird/

TRUNCATE TABLE <target table> [ <identity column restart option> ]

<identity column restart option> ::=
CONTINUE IDENTITY
| RESTART IDENTITY

10-05 19:18