[英]Is there a way to get field => value pairs from a subselect in MySQL?
我正在考慮如何最好地在MySQL支持的應用程序中實施審核跟蹤。 一些系統訪問相同的數據庫和表,因此我認為觸發器將是最佳解決方案。
但是,我不想為每個表手動編寫觸發器,因此我希望自動記錄每個插入/刪除的字段名稱和數據。
就像是:
INSERT INTO `audits` SET
`table_name` = 'jobs',
`table_key` = OLD.`id`,
`changed_at` = NOW(),
`notes` = (SELECT * FROM NEW);
但是,子選擇將返回單行結果集,該結果集不能視為字符串。 我想要一個函數來接受該行並將其轉換為:
"id = 1, name = 'something', another_field = 'data'"
或類似的東西。
編輯:這里的要點是我不想在每個表中的每個字段中鍵入。 有超過120個表格,其中一些具有> 100個字段。 如果MySQL本身無法實現,我想我會寫一個小程序來旋轉每個表和字段並為我生成SQL。
SELECT CONCAT('id = ', id, ', name = ''', name, ''', another_field = ''', data, '''')
FROM NEW
您可以串聯字符串。
例如:
select concat("id = ", t.id, "name = ", t.name) from myTable t;
我最終寫了一個PHP腳本來遍歷每個相關表並為我構建觸發器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.