更新SQL Server CE表的最佳方法是什么?

时间:2012-12-15 08:45:39

标签: sql sql-server-ce crud

我有2张桌子 表电影
- id(PK)
- 标题
- 类型

剧集
- id(PK)
- 剧集(PK)
- 标题

每部电影都有一些剧集
动画

---------------------------------
| id | title       | type       |
|----|-------------|------------|
| 1  | movie1      | 3 episodes |
| 2  | movie2      | 2 episodes |
---------------------------------



----------------------------------------
| id | episode     | title             |
|----|-------------|-------------------|
| 1  | 1           | movie1 episode 1  |
| 1  | 2           | movie1 episode 2  |
| 1  | 3           | movie1 episode 3  |
| 2  | 1           | movie2 episode 1  |
| 2  | 2           | movie2 episode 2  |
----------------------------------------


如果我更新记录id =“1”(在两个表上),我经常使用:
电影

Update Movie set title='...', type='...' where id=1;

剧集

Delete from Episode where id=1;
Insert into Episode(id, episode, title) values('...', '...', '...');

我认为更新Table Episode是一种愚蠢的方式。我只是想不到另一种更新记录的方法,考虑用户可以更改,添加或删除表上的某些记录,然后将所有更改保存到数据库。

任何人都有其他解决方案吗?

修改

离。 用户在Table Episode上做了一些更改(只是id = 1)

----------------------------------------
| id | episode     | title             |
|----|-------------|-------------------|
| 1  | 1           | movie1 episode 1  |
| 1  | 2           | movie1 episode 1a |
| 1  | 3           | movie1 episode 2  |
| 1  | 4           | movie1 episode 3a |
| 1  | 5           | movie1 episode 3b |
----------------------------------------

如何将所有更改存储到数据库?

2 个答案:

答案 0 :(得分:0)

我认为此查询可以解决您的问题:

update Movie m inner join Episode e on m.id = e.id and m.id = 1 set m.title = 'your_value', e.title = 'your value'

DB:MYSQL 5.5

答案 1 :(得分:0)

我建议稍微改变你的表结构,然后你不需要所有的更新。

即。可以通过在剧集(按电影ID)上执行SELECT COUNT(*)来计算Movie.Type。我不明白为什么你需要存储Movie.Type,并且Episode.Title也可以计算,你只需要在Episode表中存储Episode Title而不是Movie Title + Episode Title。这样你就可以只计算查询中的标题,而不是存储冗余数据,然后担心如何更新它。

相关问题