我在我的數據庫中有兩個表。第一個很簡單,但第二個表(有點)很複雜。如何使用MySQL觸發器這種方式?
我的數據以這種方式存儲在第二個表中:1_2_3(用_分隔的數據)。
我需要一個觸發器更新第二個表中的字符串(當第一個表中更新了特定值時),但只有特定的子字符串,所以..如果我只想更改第一個子字符串('1 '在當前的例子中),其餘的2個子串不應該改變,也不能重置爲默認值。
我查找了mysql拆分方法或子字符串方法,但沒有找到任何東西。
我在我的數據庫中有兩個表。第一個很簡單,但第二個表(有點)很複雜。如何使用MySQL觸發器這種方式?
我的數據以這種方式存儲在第二個表中:1_2_3(用_分隔的數據)。
我需要一個觸發器更新第二個表中的字符串(當第一個表中更新了特定值時),但只有特定的子字符串,所以..如果我只想更改第一個子字符串('1 '在當前的例子中),其餘的2個子串不應該改變,也不能重置爲默認值。
我查找了mysql拆分方法或子字符串方法,但沒有找到任何東西。
您可以使用MySQL的SUBSTRING_INDEX()
功能在您的更新語句來提取您列的不變部分:
UPDATE col = CONCAT('new', '_', SUBSTRING_INDEX(col, '_', -2))
但實際上應該這種結構化數據不存儲在一個分隔字符串!請考慮將每個元素存儲在適當數據類型的自己的列中。
爲我的數據庫計算了另一個結構,這將更容易處理! :) 感謝您的建議! (順便說一句,有沒有人知道我爲什麼得到-1我的問題?試圖儘可能精確.. :(/傷心) – Levela 2012-07-16 12:40:23
如果我記錯了,你不能用表觸發器更新表本身... – Ron 2012-07-16 10:35:43
最好的解決辦法是設計你的數據庫,以便它不包含在列字符分隔值......泰德方式你使用觸發器來更新表格中的一行而不是表格中的一列的一部分 – 2012-07-16 10:46:24