【问题标题】:MySQL Key ConstraintMySQL 键约束
【发布时间】:2011-05-18 13:26:51
【问题描述】:

我有一个 MySQL 表,其中包含两个字段:a(int)和 b(string),使用 InnoDB 引擎。

我想对其进行结构化,以便特定的 b 值可以在表中出现任意次数,但每次出现时它必须始终以相同的 a 值出现,即假设我的表如下所示:

(a,b)
(1,'foo')
(2,'bar')
(2,'bar')
(2,'baz')

我应该能够成功地将 (1,'foo'), (2,'bar') 甚至 (2,'qux') 插入到表中,但是插入 (2,'foo'), ( 1,'bar') 或 (1,'baz') 应该会失败,因为无论何时出现 b 的这些字符串值,它们都应该始终以相同的 a 值出现。

任何想法如何有效地做到这一点?我一直在玩交易和SELECT ... FOR UPDATE,但没有运气。我有错误的表结构吗?

【问题讨论】:

  • 也许创建一个表,其中的值必须与哪些整数一起使用?

标签: mysql constraints innodb unique-key


【解决方案1】:

我最终使用了如下语句:

 INSERT INTO mytable(`a`,`b`) SELECT 1,'foo' FROM dual WHERE NOT EXISTS
 (SELECT * FROM mytable WHERE a != 1 AND b = 'foo')

只有在嵌套选择不返回任何行时才会插入一行。

【讨论】:

    【解决方案2】:

    这样的事情呢

    如果存在(从 mytable 中选择 null,其中 a!=prm_a 和 b=prm_b)然后 插入 ... 别的 增加 结束;

    ?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多