这实际上是一个更新为特定客户工作的团队成员的表单。当我取消选择某个成员时,它的状态将变为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_id
和member_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.
这是我表单的截图。
答案 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组合重复,它将自动执行该特定行的更新查询。