【发布时间】:2011-12-13 14:01:11
【问题描述】:
我有一个程序(我无法更改,它是一个由其他开发人员编写的音乐应用程序),它使用几个访问 97' 数据库。其中一个数据库是“Playlists”数据库,其中包含 2 个表“PlaylistNames”和“PlaylistSongs”。
“PlaylistNames”表有一个长类型的 AutoIncrement、Unique、PrimaryKey“autoID”列,一个保存每个播放列表名称的“PlaylistName”字符串列和一个定义播放列表是否由以下人员创建的“isServerPlaylist”布尔列用户或从服务器发送。
“PlaylistSongs”表有一个 AutoIncrement、Unique、PrimaryKey“autoID”列、一个“PlaylistID”列,它是一个指向前一个表“autoID”字段的 ForeignKey,以及一个指向另一个表的“TrackID”列 ForeignKey歌曲信息。
这两个表中的记录如下所示:
“播放列表名称”
autoID:01 PlaylistName:Rock isServerPlaylist:True
autoID:02 PlaylistName:Pop isServerPlaylist:True
“播放列表歌曲”
autoID:01 PlaylistID:01 TrackID:100
autoID:02 PlaylistID:01 TrackID:101
autoID:03 PlaylistID:01 TrackID:102
autoID:04 PlaylistID:02 TrackID:103
autoID:05 PlaylistID:02 TrackID:104
autoID:06 PlaylistID:02 TrackID:105
这意味着当前有 2 个播放列表,摇滚和流行,每个包含 3 首曲目。
现在,有数据库的客户端和服务器端副本。客户端数据库具有服务器的播放列表副本以及客户端将添加/创建的任何播放列表。服务器端的播放列表也会更新。
假设服务器播放列表是那些 2 Rock 和 Pop。如果用户添加/创建新的播放列表,PlaylistNames 表上的新记录将添加到客户端数据库中,其中 autoID = 03,客户端将选择的播放列表名称和 isServerPlaylist 字段 = false。在 PlaylistSongs 表中将添加与客户端将选择添加到播放列表中的歌曲一样多的记录。 playlistID 列将为 03。
服务器还会更新其播放列表,因此,通过服务器上的更新,我可能会添加/创建一个新的播放列表,该播放列表将在 PlaylistNames 表 autoID = 03 中具有我将选择的播放列表名称并将 isServerSide 列设置为 true。
我想要做的是合并这些播放列表,这样当在服务器端添加新的播放列表并且客户端创建了自己的播放列表时,合并的 PlaylistNames 表的 AutoID 主键列将具有唯一值。这就是我卡住的地方。你们能指出一个可以做到这一点的方法吗?
【问题讨论】:
标签: c# winforms visual-studio ms-access