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
将是适当的操作。