如何在mysql UPDATE查询中使用正则表达式?

时间:2011-07-12 12:49:22

标签: php mysql

我有两个表,一个是另一个表可以拥有的参数表,它们的存储方式如下:

表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

任何帮助将不胜感激,谢谢

3 个答案:

答案 0 :(得分:1)

你应该重组你的表格。规范化数据建模将告诉您使用n到m表结构(many-to-manyjunction)。因此,创建一个第三个表,它包含对两个表的所有引用,并驻留在当前两个表之间。

答案 1 :(得分:0)

如果您尚未巩固此代码,我强烈建议您在架构变得难以管理之前重新构建架构。

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 :(得分:0)

imho你这里有一个小的数据库设计问题。您必须通过执行以下操作来规范化表2:

id pk 英国名字 参数UK

参数应该有1个值。所以你的第3行应该分成两行:

3 name3 var2
4 name3 var3

或者如果它太复杂了,请像cularis说的那样,添加第三张表。