SQLite 不支持的 SQL 特性
相对于试图列出 SQLite 支持的所有 SQL92 特性,只列出不支持的部分要简单得多。下面显示的就是 SQLite 所不支持的 SQL92 特性。
这个列表的顺序关系到何时一个特性可能被加入到SQLite 。接近列表顶部的特性更可能在不远的将来加入。接近列表底部的特性尚且没有直接的计划。
外键约束(FOREIGN KEY constraints ) |
|
外键约束会被解析但不会被执行。 |
完整的触发器支持(Complete trigger support ) |
|
现在有一些触发器的支持,但是还不完整。 缺少的特性包括 FOR EACH STATEMENT 触发器(现在所有的触发器都必须是 FOR EACH ROW ), 在表上的 INSTEAD OF 触发器(现在 INSTEAD OF 触发器只允许在视图上), 以及递归触发器—— 触发自身的触发器。 |
完整的 ALTER TABLE 支持(Complete ALTER TABLE support ) |
|
只支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN 。 其他类型的 ALTER TABLE 操作如 DROP COLUMN ,ALTER COLUMN ,ADD CONSTRAINT 等等均被忽略。 |
嵌套事务(Nested transactions ) |
|
现在的实现只允许单一活动事务。 |
RIGHT 和 FULL OUTER JOIN (RIGHT and FULL OUTER JOIN ) |
|
LEFT OUTER JOIN 已经实现,但还没有 RIGHT OUTER JOIN 和 FULL OUTER JOIN 。 |
可写视图(Writing to VIEWs ) |
|
SQLite 中的视图是只读的。无法在一个视图上执行 DELETE ,INSERT ,UPDATE 。 不过你可以创建一个试图在视图上 DELETE ,INSERT ,UPDATE 时触发的触发器,然后在触发器中完成你所需要的工作。 |
GRANT 和 REVOKE (GRANT and REVOKE ) |
|
由于 SQLite 读和写的是一个普通的磁盘文件, 因此唯一可以获取的权限就是操作系统的标准的文件访问权限。 一般在客户机/ 服务器架构的关系型数据库系统上能找到的 GRANT 和 REVOKE 命令对于一个嵌入式的数据库引擎来说是没有意义的, 因此也就没有去实现。 |
如果你发现 SQLite 不支持的其它 SQL92 特性,请在Wiki http://www.sqlite.org/cvstrac/wiki?p=Unsupported 中添加。