合并数据库表唯一字段问题
本文关键字:字段 问题 唯一 数据库 合并 | 更新日期: 2023-09-27 18:17:36
我有一个程序(我不能改变,这是一个由其他一些开发人员编写的音乐应用程序),它使用一对夫妇访问97'数据库。其中一个数据库是"播放列表"数据库,有2个表"PlaylistNames"answers"PlaylistSongs"。
"PlaylistNames"表有一个自动增量,唯一,PrimaryKey"autoID"长类型列,一个"PlaylistName"字符串列,其中包含每个播放列表的名称和一个"isServerPlaylist"bool列,该列定义播放列表是由用户创建还是从服务器发送。
"PlaylistSongs"表有一个AutoIncrement, Unique, PrimaryKey"autoID"列,"playlistd"列是指向前一个表"autoID"字段的ForeignKey,"TrackID"列是指向另一个保存歌曲信息的表的ForeignKey。
这是两个表中记录的样子:
"PlaylistNames"autoID:01 PlaylistName:Rock isServerPlaylist:True
autoID:02 PlaylistName:Pop isServerPlaylist:True
"PlaylistSongs"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首曲目。
现在,有了数据库的客户端和服务器端副本。客户端数据库拥有服务器的播放列表副本以及客户端添加/创建的任何播放列表。服务器端的播放列表也会更新。
假设服务器播放列表是那两个摇滚和流行音乐。如果用户添加/创建一个新的播放列表,将在客户端数据库中添加一条新的PlaylistNames表记录,autoID = 03,客户端将选择一个playlistName, isServerPlaylist字段= false。在PlaylistSongs表中,将添加与客户端将选择添加到播放列表中的歌曲相同数量的记录。playlistID列将为03。
服务器也更新它的播放列表,所以,随着服务器上的更新,我可能会添加/创建一个新的播放列表,它将在PlaylistNames表autoID = 03中,一个播放列表名称,我将选择和isServerSide列设置为true。
我想做的是合并这些播放列表,在某种程度上,当新的播放列表被添加到服务器端,当客户端已经创建了自己的播放列表的AutoID主键列合并的PlaylistNames表将有唯一的值。这就是我被困住的地方。你们能指出一个可行的方法吗?
我假设服务器端处理超出了您的范围?(即合并两个播放列表?)
在这种情况下,我建议,当你的用户离线创建一个播放列表时,它会自动检查服务器上是否已经有一个类似的播放列表。从这里开始,您可以下载现有的serverplaylist,然后添加到它。或者你也可以检查服务器播放列表上的最高ID是什么并确保你的离线播放列表从(maximumIDserverside +1)开始这样更简单。在主键中添加isServerPlaylist字段和play.