ฉันไม่เชื่อว่าจะมีวิธีรวมทั้งสามข้อความ สิ่งที่ใกล้เคียงที่สุดที่ไม่ได้ช่วยคุณจริงๆและนั่นคือ SET SELECT ทางออกที่ดีที่สุดของคุณคือสิ่งกระตุ้น ด้านล่างเป็นตัวอย่างของทริกเกอร์ที่ฉันมักใช้เพื่อรักษาเพียงหลักฐานการตรวจสอบ (สร้างด้วย PHP):
$trigger = "-- audit trigger --\nDELIMITER $ \n".
"DROP TRIGGER IF EXISTS `{$prefix}_Audit_Trigger`$\n".
"CREATE TRIGGER `{$prefix}_Audit_Trigger` AFTER UPDATE ON `$this->_table_name` FOR EACH ROW BEGIN\n";
foreach ($field_defs as $field_name => $field) {
if ($field_name != $id_name) {
$trigger .= "IF (NOT OLD.$field_name <=> NEW.$field_name) THEN \n".'INSERT INTO AUDIT_LOG ('.
'Table_Name, Row_ID, Field_Name, Old_Value, New_Value, modified_by, DB_User) VALUES'.
"\n ('$this->_table_name',OLD.$this->_id_name,'$field_name',OLD.$field_name,NEW.$field_name,".
"NEW.modified_by, USER()); END IF;\n";
}
}
$trigger .= 'END$'."\n".'DELIMITER ;';