Triggers 无子项时删除父项的SQLite触发器expr

Triggers 无子项时删除父项的SQLite触发器expr,triggers,sqlite,conditional,Triggers,Sqlite,Conditional,SQLite数据库中有一组经典的父/子表: CREATE TABLE ImageGallery ( ImageGalleryId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , Name VARCHAR(80) UNIQUE NOT NULL ); CREATE TABLE Image ( ImageId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , Image

SQLite数据库中有一组经典的父/子表:

CREATE TABLE ImageGallery (
    ImageGalleryId INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL , 
    Name VARCHAR(80) UNIQUE NOT NULL
    );

CREATE TABLE Image (
    ImageId INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL , 
    ImageGalleryId INTEGER NOT NULL, 
    Filename VARCHAR(260) NOT NULL, 
    FullPath VARCHAR(260) NOT NULL 
    );
如果图像库中没有其他图像,则需要在删除图像后触发一个触发器,该触发器将删除该图像库,基本上如下所示:

if ((select count(*) from Image where ImageGalleryId = old.imageGalleryId) == 0) then
begin
  delete from ImageGallery where ImageGalleryId = old.imageGalleryId
end

这在SQLite方言中到底是什么样子的?

SQLite没有IF语句

但是,触发器具有以下特性:

CREATE TRIGGER xxx
AFTER DELETE ON Image
WHEN (SELECT COUNT(*) FROM Image WHERE ImageGalleryId = OLD.ImageGalleryId) = 0
BEGIN
    DELETE FROM ImageGallery WHERE ImageGalleryId = OLD.ImageGalleryId;
END;