เป็นไปได้ไหมที่จะสร้างโพรซีเดอร์ที่เก็บไว้เมื่อใช้ SQLite
เป็นไปได้ไหมที่จะสร้างโพรซีเดอร์ที่เก็บไว้เมื่อใช้ SQLite
คำตอบ:
SQLite ต้องเสียสละคุณสมบัติอื่น ๆ ที่บางคนพบว่ามีประโยชน์เช่นการทำงานพร้อมกันสูง, การควบคุมการเข้าถึงอย่างละเอียด, ชุดฟังก์ชั่นในตัวที่หลากหลาย, ขั้นตอนการจัดเก็บ , คุณสมบัติภาษา SQL ลึกลับ, XML และ / หรือ Java ส่วนขยาย หรือความสามารถในการปรับขนาด Peta-byte และอื่น ๆ
ที่มา: การใช้ที่เหมาะสมสำหรับ SQLite
คำตอบ : ไม่
นี่คือเหตุผล ... ฉันคิดว่าเหตุผลสำคัญสำหรับการจัดเก็บ procs ในฐานข้อมูลคือคุณกำลังรันรหัส SP ในกระบวนการเดียวกับโปรแกรม SQL สิ่งนี้เหมาะสมสำหรับเอ็นจินฐานข้อมูลที่ออกแบบมาเพื่อทำงานเป็นเซอร์วิสที่เชื่อมต่อกับเครือข่าย แต่ความจำเป็นสำหรับ SQLite นั้นน้อยกว่ามากเนื่องจากมันทำงานเป็น DLL ในกระบวนการแอปพลิเคชันของคุณมากกว่าในกระบวนการเอ็นจิน SQL แยกต่างหาก ดังนั้นจึงเหมาะสมที่จะใช้ตรรกะทางธุรกิจทั้งหมดของคุณรวมถึงสิ่งที่จะเป็นรหัส SP ในภาษาโฮสต์
อย่างไรก็ตามคุณสามารถขยาย SQLite ด้วยฟังก์ชั่นที่ผู้ใช้กำหนดเองในภาษาโฮสต์ (PHP, Python, Perl, C #, Javascript , Rubyฯลฯ ) จากนั้นคุณสามารถใช้ฟังก์ชั่นที่กำหนดเองเหล่านี้เป็นส่วนหนึ่งของ SQLite select / update / insert / delete ฉันทำสิ่งนี้ใน C #โดยใช้SQLite ของ DevArtเพื่อใช้การแฮชรหัสผ่าน
หากคุณยังสนใจ Chris Wolf ได้สร้างต้นแบบการใช้งานของ SQLite ด้วยกระบวนงานที่เก็บไว้ คุณสามารถค้นหารายละเอียดได้ที่โพสต์บล็อกของเขา: เพิ่มวิธีการจัดเก็บเพื่อ SQLite
แต่มันเป็นไปได้ที่จะปลอมมันโดยใช้ตารางเฉพาะสำหรับชื่อปลอมของคุณด้วยทริกเกอร์ AFTER INSERT แถวตารางเฉพาะมีพารามิเตอร์สำหรับ sp ปลอมของคุณและหากต้องการส่งคืนผลลัพธ์คุณสามารถมีตารางที่สอง (poss. temp) (มีชื่อที่เกี่ยวข้องกับ fake-sp) เพื่อเก็บผลลัพธ์เหล่านั้น มันจะต้องมีสองแบบสอบถาม: ข้อมูล INSERT แรกเข้าไปในตารางปลอม -sp-trigger-table และที่สองเพื่อเลือกจากตารางปลอม -sp- ผลลัพธ์ - ซึ่งอาจจะว่างเปล่าหรือมีช่องข้อความถ้ามีอะไรผิดพลาด .