sqlite3与Delphi XE Zeosdb Tztable级联删除
我有两张桌子客户,Commande sqlite3中的DDL如下所示: 我使用TzTable1作为客户端,TzTable2作为命令 因此,当我通过调用sqlite3与Delphi XE Zeosdb Tztable级联删除,delphi,sqlite,delphi-xe,cascading-deletes,zeos,Delphi,Sqlite,Delphi Xe,Cascading Deletes,Zeos,我有两张桌子客户,Commande sqlite3中的DDL如下所示: 我使用TzTable1作为客户端,TzTable2作为命令 因此,当我通过调用Tztable1.delete从客户机表中删除客户机时 ,它不会从命令表中删除关联的命令 我不知道问题出在哪里 我想在调用Tztable1.delete后,您必须重新打开TzTable2,以反映数据库级别上发生的更改。我重新打开并刷新了TzTable2,但没有解决问题。您是否关闭并(重新)打开TzTable2?如果在表已经打开时调用open,那么表
Tztable1.delete从客户机表中删除客户机时代码>
,它不会从命令表中删除关联的命令
我不知道问题出在哪里 我想在调用Tztable1.delete后,您必须重新打开TzTable2,以反映数据库级别上发生的更改。我重新打开并刷新了TzTable2,但没有解决问题。您是否关闭并(重新)打开TzTable2?如果在表已经打开时调用open,那么表组件很可能不会重新提取数据。你能用另一种方式访问数据吗?您是否验证了数据是否真的按预期删除了?1-是的,我这样做了,Tztable2.close;Tztable2.open;但是什么也没发生,2-是的,通过使用Sqlitestudio v2.1.2,工作正常,当我在客户端删除一条记录时,Commande中所有相关的记录也被删除,所以我猜问题出在Zeosdb引擎和组件中!!
CREATE TABLE Client (
id_client INT NOT NULL,
nom varchar(10),
PRIMARY KEY ( id_client )
);
CREATE TABLE Commande (
id_commande INT NOT NULL,
id_client INTEGER REFERENCES Client ( id_client ) ON DELETE CASCADE
ON UPDATE CASCADE,
PRIMARY KEY ( id_commande )
);