删除表时是否会自动删除 SQLite 索引?

c00*_*0fd 4 sqlite

说,如果我首先执行以下操作来使用 SQLite3 数据库创建一个表:

CREATE TABLE `t3` (
    `f0` INTEGER PRIMARY KEY AUTOINCREMENT, 
    `f1` INTEGER NOT NULL REFERENCES `t2`(`f0`) ON DELETE CASCADE, 
    `f2` INTEGER NOT NULL REFERENCES `t1`(`f0`) ON DELETE CASCADE, 
    `f3` INTEGER NOT NULL, 
    `f4` BLOB, 
    `f5` BLOB, 
    `f6` BLOB, 
    `f7` BLOB, 
    `f8` BLOB, 
    `f9` BLOB, 
    `fa` BLOB)
Run Code Online (Sandbox Code Playgroud)

然后在该表上创建一个索引:

CREATE INDEX `it31` ON `t3`(`f1`)
Run Code Online (Sandbox Code Playgroud)

所以在这个表插入了一些行之后,如果我通过执行以下操作将其删除:

DROP TABLE `t3`
Run Code Online (Sandbox Code Playgroud)

它是否也删除了it31索引,还是我需要在删除表之前删除索引?

Dan*_* D. 5

是的,文档指出:

与该表关联的所有索引和触发器也将被删除。

来自https://sqlite.org/lang_droptable.html