MySQL-对列组合的唯一限制:避免错误


MySQL - unique restraint on combination of columns: avoiding error?

我对列的组合有一个唯一的约束,而不是对单个列。如果我试图插入违反此限制的数据,MySQL自然会出错。

顺便说一句,这是通过PHP>CodeIgniter实现的。

我的问题是:在inert上,建议的处理方法是什么?我应该…吗

  • 正在抑制错误?(#flamme(
  • 是否首先运行查询以确保它不会发生
  • 允许该错误,因为它不会对用户造成任何可见的问题
  • 使用replace into而不是insert into?(不过,我认为CodeIgniter的Active Record类不提供对replace into的访问权限?(

上下文:

我有一个标签表,其中存储了用户创建的标签,用于对其内容进行分类:

  • id(PK,int,AI,unsigned(
  • 标签(varchar 25(
  • user_id(FK,int,unsigned(

给定的用户无法创建他之前创建的标签,因此唯一的限制是id和user_id列的组合。

$insert_query = $this->db->insert_string('my_table', $data);
$insert_query = str_replace('INSERT INTO','INSERT IGNORE INTO',$insert_query);
$this->db->query($insert_query);

我认为应该这样做。

在MySQL表中将类型为UNIQUE的键添加到tag+user_id。之后,在Your查询中将处理程序设置为ON DUPLICATE KEY。你可以避免错误,但不必抑制错误;(