Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在进行实体映射时,是否可以删除/插入而不是差异/更新?_Sql_Database_Entity - Fatal编程技术网

Sql 在进行实体映射时,是否可以删除/插入而不是差异/更新?

Sql 在进行实体映射时,是否可以删除/插入而不是差异/更新?,sql,database,entity,Sql,Database,Entity,假设我有一个活动,我想让人们参加 当我创建事件时,我会 插入事件(eventName)值('some event');--eventId=1 插入eventPeopleMapping(eventId、personId) 价值观 (1,1),--第1人 (1,2),--第二人 (1,3),--第三人 --还有几百。。。 ; 现在,如果我想删除人员3,但添加人员7,该怎么办 从eventPeopleMapping中删除,其中eventId=1; 插入eventPeopleMapping(event

假设我有一个活动,我想让人们参加

当我创建事件时,我会

插入事件(eventName)值('some event');--eventId=1
插入eventPeopleMapping(eventId、personId)
价值观
(1,1),--第1人
(1,2),--第二人
(1,3),--第三人
--还有几百。。。
;
现在,如果我想删除
人员3
,但添加
人员7
,该怎么办

从eventPeopleMapping中删除,其中eventId=1;
插入eventPeopleMapping(eventId、personId)
价值观
(1,1),--第1人
(1,2),--第二人
(1,7),--第7人
--还有几百。。。
;
这样做好吗?

注意:这是为数百人准备的,经常变化

比较数组和对象以找出差异,然后在数据库中查找值太麻烦了。这看起来很简单,但我不知道我是否遗漏了什么


我看到的唯一缺点是大量映射ID,并且它们不断变化。

您的方法可行,但它需要了解活动中的所有人。更常见的情况是,只删除要删除的行,然后只插入新行:

DELETE FROM eventPeopleMapping
    WHERE eventId = 1 AND personId = 3;

INSERT INTO eventPeopleMapping (eventId, personId) 
    VALUES (1, ;7)  -- Person 7

如果它总是删除一个并添加另一个,为什么我们不把
更新
作为一个操作,而把
删除
插入
作为两个操作?还是我错了?是的,我确实认识所有在任何时候参加的人。而且,这个用例是为数百个不断变化的人设计的。所以,我想知道如果有100个人,我的方法是否不好,如果我添加一个人,100人被删除,101人被插入后面。这比弄清楚要删除什么和插入什么要容易得多,但我不确定成本。@Sujitmohanty30。OP特别说删除一个人,添加另一个人,而不是将一个人变成另一个人。@GordonLinoff是的,不一定是一个人。可以删除100个,添加200个。你的答案正确吗?@Ivan。老实说,如果你在其他地方有完整的列表,我不明白你为什么要使用数据库。数据库应该真正地跟踪这些信息,而
insert
/
delete
将是适当的操作。