SQL只有在两列(id)以前不在一对中时才插入新行


SQL insert new row only if two columns(ids) do not exist in pair previously

Table_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中插入一个新行。

我不想要的例子,表_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);

可能错过了一些愚蠢的东西,但我想有人可能会把我推向正确的方向,谢谢!

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

所以类似于:

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

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