创build存储过程和SQLite?
在使用SQLite时,是否有可能创build一个存储过程?
SQLite不得不牺牲一些人们认为有用的特性,比如高并发性,细粒度的访问控制,丰富的内置函数集, 存储过程 ,深奥的SQL语言特性,XML和/或Java扩展,tera-或者peta字节可伸缩性等等
来源: 适当的用途SQLite
答 : 没有
这就是为什么 ……我认为在数据库中存储特效的一个关键原因是你在与SQL引擎相同的进程中执行SP代码。 这对于devise用作networking连接服务的数据库引擎来说是有意义的,但是对于SQLite来说,它的要求更less,因为它在应用程序进程中作为DLL运行,而不是在单独的SQL引擎进程中运行。 所以实现所有的业务逻辑,包括主机语言中的SP代码是更有意义的。
但是,你可以使用你自己的用户定义的函数以SQL语言(PHP,Python,Perl,C#, Javascript , Ruby等)来扩展SQLite。 然后,您可以使用这些自定义函数作为任何SQLiteselect/更新/插入/删除的一部分。 我已经在C#中使用DevArt的SQLite来实现密码散列。
SQLite 没有sprocs 。
如果你仍然感兴趣,Chris Wolf用存储过程做了一个SQLite的原型实现。 您可以在他的博客文章中find详细信息: 将存储过程添加到SQLite
只是因为大多数使用SQLite的应用程序不使用存储过程并不意味着它们没有用处。
我对他们的主要用途之一是,当查询稍有变化时,我不必重新分发整个应用程序。 只是数据库的变化,这是一个简单的脚本,通常小于1K。
我正在考虑是否应该发布我的存储过程C#/ SQL代码。 当我正在查看是否有其他人这样做时,我发现了这个线程。
我并不反对人们(有时)希望sproc在与服务器相同的执行空间中执行的想法,但SQLite根据定义与应用程序在同一个空间中。