【问题标题】:SQL insert new row only if two columns(ids) do not exist in pair previously仅当两列(id)以前不存在时,SQL才插入新行
【发布时间】:2012-03-02 01:30:31
【问题描述】:

表_A:

id | user_id | stage_id | create_date

表_B:

id | stage_id | template_id | name | description | create_date

我正在通过带有 ajax 调用的页面上的表单将数据保存到这些数据中。我的问题是,如果 stage_id user_id 配对是唯一的,我只想在 Table_A 中插入一个新行。

我不想要的示例,Table_A:

 id    user_id   stage_id   create_date
0129 |  24321  |  3202393 | 01/12/12
0129 |  39234  |  3202393 | 01/12/12
2329 |  39234  |  3202393 | 01/14/12
3459 |  39234  |  3202393 | 01/15/12

^ 这是我不希望发生的事情,有什么好的方法来处理吗?

应该是:

 id    user_id   stage_id   create_date
0129 |  24321  |  3202393 | 01/12/12
0129 |  39234  |  3202393 | 01/12/12

通过 php 类执行查询,如这个过于简单的示例:

$query = 'INSERT INTO Table_A ('.
            'id, '.
            'user_id, '.
            'stage_id, '.
            'create_date '.
            ') OUTPUT inserted.id '.
            'VALUES ('.
                'newid(), '.
                '%s, '.
                '%s, '.
                'getdate()'.
        ')';

$this->db->Execute($query);

可能错过了一些愚蠢的东西,但我认为有人可以将我推向正确的方向,谢谢!

【问题讨论】:

  • Table_B 是否在您的问题中起作用?

标签: php sql sql-server


【解决方案1】:

我只想查询您的表以查看您的 stage_id、user_id 对是否已存在值。

类似:

if not exists (select * from table_A where user_id = @myUserID and stage_id = @myStageID)
begin
insert into ...
end

【讨论】:

    【解决方案2】:

    如果你愿意在数据库中做,可以在sql-server中使用UNIQUE约束:http://msdn.microsoft.com/en-us/library/ms191166.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      相关资源
      最近更新 更多