只有先前两个列(ID)不存在,SQL才会插入新行

时间:2012-03-02 01:30:31

标签: php sql sql-server

表-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);

可能遗漏了一些愚蠢的东西,但我认为有人可能会把我推向正确的方向,谢谢!

2 个答案:

答案 0 :(得分:3)

我只是查询你的表,看看你的stage_id,user_id对是否已经存在一个值。

如下所示:

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

答案 1 :(得分:0)

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