Reputation: 134
I have a relation table with no primary key:
ticket_id | type | value | code
i want to do insert and update into this table with bulk method, the condition to update is if the ticket_id
and code
are injected with duplicate data, then it will update the type or value record. How can i achieve this?
for example i will be receiving insert data like this:
[
{
"ticket_id":"1",
"type":"name",
"value":"Ben",
"code":"person_name"
},
{
"ticket_id":"1",
"type":"phone",
"value":"0812",
"code":"person_phone"
},
{
"ticket_id":"1",
"type":"mail",
"value":"[email protected]",
"code":"person_mail"
},
{
"ticket_id":"2",
"type":"name",
"value":"Jesse",
"code":"person_name"
},
{
"ticket_id":"2",
"type":"phone",
"value":"8272",
"code":"person_phone"
},
{
"ticket_id":"2",
"type":"mail",
"value":"[email protected]",
"code":"person_mail"
}
]
then the update data:
[
{
"ticket_id":"1",
"type":"name",
"value":"Joe",
"code":"person_name"
},
{
"ticket_id":"1",
"type":"phone",
"value":"9810",
"code":"person_phone"
},
{
"ticket_id":"1",
"type":"mail",
"value":"[email protected]",
"code":"person_mail"
},
{
"ticket_id":"2",
"type":"name",
"value":"Rose",
"code":"person_name"
},
{
"ticket_id":"2",
"type":"phone",
"value":"0992",
"code":"person_phone"
},
{
"ticket_id":"2",
"type":"mail",
"value":"[email protected]",
"code":"person_mail"
}
]
Upvotes: 0
Views: 534
Reputation: 222482
You can use the insert ... on duplicate key
syntax - as commented by RiggsFolly:
insert into mytable (ticket_id, type, value, code)
values(:ticket_id, :type, :value, :code)
on duplicate key update type = values(type), value = values(value)
For this to work, you need a unique constraint on (ticket_id, code)
.
Upvotes: 1