我无法找出是否存在重复行。我有3个表格,包含以下表格结构。
domaintable
--------------------
| id name |
--------------------
| 1 car |
| 2 student |
|__________________|
domaintableschema
-------------------------------------------
| id domaintableId columnName type |
-------------------------------------------
| 1 1 model string |
| 2 1 year string |
| 3 2 name string |
| 4 2 gender string |
-------------------------------------------
domaintabledata
----------------------------------------------
| id domaintableschemaId row value |
----------------------------------------------
| 1 1 1 Jaguar |
| 2 2 1 2016 |
| 3 3 1 Joe |
| 4 4 1 male |
| 5 3 2 Jake |
| 6 4 2 female |
|_____________________________________________|
在用户界面中,表格car和学生显示为域表。用户有权使用任何域架构创建更多域表。但是不允许用户将重复值插入域表数据中。要按照以下方式插入数据的API有效内容,假设用户想要插入值为male
和Jake
的学生表。
{
"0": {
"domaintableschemaId": 4,
"value": "male",
"row": 3
},
"1": {
"domaintableschemaId": 3,
"value": "Joe",
"row": 3
}
}
我尝试了什么,我编写了以下查询以避免重复,但它并不适用于所有情况。这个方法,我形成了schemaId = [4, 3]
和value = [ "Joe", "male"]
SELECT * from domaintabledata where values in $value and schemaId in $schemaId
返回rows数组,任何长度等于payload的数组元素都将决定是否存在重复。但是当我必须插入以下行时它将不起作用(注意:值相同,只有架构ID被尊重)
{
"0": {
"domaintableschemaId": 3,
"value": "male",
"row": 3
},
"1": {
"domaintableschemaId": 4,
"value": "Joe",
"row": 3
}
}
即使上述值不重复,我的解决方案也不允许插入,因为值相同且返回的行数不一,行的长度与要插入的行相同。请帮助我使用任何优雅的方法来防止插入重复值。我使用sequelize和sequelize-hierarchy作为ORM。