簡體   English   中英

如何在 mysql UPDATE 查詢中使用正則表達式?

[英]how to use regex in mysql UPDATE query?

我有 2 個表,一個是另一個表可以具有的參數表,它們的存儲方式如下:

表格1

id         name
1          var1
2          var2
3          var3

表 2

id         name       parameters
1          name1      var1|var3
2          name2      var2
3          name3      var1|var2|var3

現在,當我運行 DELETE 查詢時,我還想更新表 2 的參數,所以假設我對表 1 第 1 行運行 DELETE 查詢,我想得到以下表 2 的結果,我應該查詢它:

表 2

id         name       parameters
1          name1      var3
2          name2      var2
3          name3      var2|var3

任何幫助將不勝感激,謝謝

你應該重組你的表。 規范化數據建模會告訴您使用 n 對 m 表結構(多對多junction )。 因此,創建第三個表,其中包含對兩個表的所有引用並位於當前兩個表之間。

如果您尚未固化此代碼,我強烈建議您在模式變得難以管理之前對其進行重新設計。

Table 2中處理這種情況的正確方法不是對Table 1的鍵值進行分隔,而是為每個id存儲多行。 然后,當從Table 1中刪除時, FOREIGN KEY約束可以強制執行ON DELETE CASCADE ,這將成為非問題。

示例表 2 數據如下所示:

id         name
1          name1
1          name1
2          name2
3          name3
3          name3
3          name3

Table 2的定義如下所示:

CREATE TABLE Table_2
(
  id INTEGER NOT NULL,
  name VARCHAR() NOT NULL,
  FOREIGN KEY fk_id (id) REFERENCES Table_1 (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;

恕我直言,您在這里有一個小的數據庫設計問題。 您必須通過執行以下操作來規范化表 2:

id pk 名稱 UK 參數 UK

參數應該有 1 個值。 所以你的第 3 行應該分成兩行:

3 name3 var2
4 name3 var3

或者如果它太復雜,就像 cularis 說的那樣,添加第三個表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM