เมื่อคุณสร้างตารางใหม่hook_schema()
ควรเพิ่มตารางนั้นhook_update_N()
ด้วยหรือไม่ หรือมีเคล็ดลับหรือสิ่งที่ฉันพลาดเพื่อให้ databae-updates เพิ่มตารางโดยอัตโนมัติ
เอกสารประกอบของ hook_update_N () ไม่ได้อธิบายอะไรเกี่ยวกับการแนะนำตารางใหม่ในขณะที่เอกสารของhook_schema()
says:
ตารางที่ประกาศโดย hook นี้จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อเปิดใช้งานโมดูลเป็นครั้งแรกและจะถูกลบออกเมื่อถอนการติดตั้งโมดูล
(ไฮไลท์เป็นของฉัน)
และถ้าเป็นเช่นนั้นวิธีที่ดีที่สุดในการหลีกเลี่ยงการทำซ้ำคำจำกัดความสคีมาสำหรับตารางใหม่ในทั้ง hook_update_N () และ hook_schema () เพียงอ้างถึงสคีมาดังต่อไปนี้:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
ดูเหมือนว่าจะทำงาน แต่ในการเปลี่ยนตารางอีกครั้งจะล้มเหลวหากผู้ใช้เรียกใช้การปรับปรุงและได้รับการทำงานอย่างน้อยสอง hook_update_N () s หลังจากทั้งหมด: hook_update_N แรกจะติดตั้งฐานข้อมูลที่ถูกต้องแล้วและ hook_update_M ตัวที่สอง () จะพยายามเพิ่ม / เปลี่ยน / แก้ไขคอลัมน์ที่ทันสมัยอยู่แล้ว
คุณจัดการกับสิ่งนี้ได้อย่างไร