在更新剩余列时,在表中插入不同的记录

时间:2014-10-14 06:30:12

标签: php mysql sql

这实际上是一个更新为特定客户工作的团队成员的表单。当我取消选择某个成员时,它的状态将变为0

我有一张包含所有独特记录的表格。表由四列组成 -

first column is `id` which is unique and auto_incremented. 
second column is `client_id`.
third column is `member_id`. (these second and third columns together make the primary key.)
fourth column is `current` which shows the status (default is 1.).

现在我有一个发送client_idmember_id值的表单。但是,此表单还包含表BUT NOT ALL中已有的值。

我需要一个

的查询
(i) `INSERT` the values that are not already in the table,

(ii) `UPDATE` the `current` column to value `0` which are in the table but not in the form values.

这是我表单的截图。

enter image description here

6 个答案:

答案 0 :(得分:2)

首先,使用SELECT查询检查表中是否存在值。

然后检查结果是否没有保存值,以便插入,否则显示错误。

答案 1 :(得分:2)

如果(从yourtable中选择count(*),其中client_id =和member_id =)> 0那么

更新yourtable set current = 0;

ELSE

插入yourtable(client_id,member_id,current)值(value1,value2,value3)

答案 2 :(得分:0)

这是创建像...一样流动的数据库存储过程的好时机。

select user
if exists update row
else insert new row

存储过程不会缩短交易时间,但它们是任何软件的重要补充。

如果这没有解决您的问题,那么数据库触发器可能有所帮助。

对此事进行一些研究可能会提出一些好主意!

答案 3 :(得分:0)

在SP中添加以下逻辑

If (select count(*) from yourtable where  client_id = <value> and member_id = <value>) > 0 THEN

update yourtable set current = 0;

ELSE

insert into yourtable (client_id,member_id,current) values (value1,value2,value3)

答案 4 :(得分:0)

如果您想要简单的解决方案,请遵循以下步骤:

 *) use select with each entry in selected team.
    if select returns a row 
   then use update sql
   else 
   use insert sql.

答案 5 :(得分:0)

在你的情况下,member_id&amp; client_id一起创建主键。

因此,您可以使用sql ON DUPLICATE KEY UPDATE语法。

示例:

    $sql="INSERT INTO table_name SET 
                        client_id='".$clientId."',
                        member_id='".$member_id."',
                        current='".$current."'
                        ON DUPLICATE KEY 
                        UPDATE 
                        current = '".$current."'
                        ";

在这种情况下,当member_id&amp; client_id组合重复,它将自动执行该特定行的更新查询。