我正在建立一个投票系统,用户可以将其他用户的条目投票或下注到sql数据库中。每个用户都会收到一个唯一的8位客户编号,可用于投票(因为此客户编号是表中的主键)。
我试图通过在投票列中输入客户编号来阻止用户对同一条目进行两次投票。但是,我不知道如何继续将客户编号添加到同一个已投票的列中,并通过查找客户编号是否包含在投票列中来阻止双重投票(在下面的代码中,您将看到我已尝试{{1找出8位客户编号是否已存在于已投票的列中,但这不起作用。)
我的代码:
CHARINDEX
答案 0 :(得分:1)
你绝对不应该将任意数量的ID打包到单个字符列中。
更好的架构是投票表,例如dbo.Votes
,其中包含用于引用条目和投票用户的列,例如EntryId
,VoterUserId
和投票列,例如: Vote
。在输入和投票用户中包含一个唯一约束以防止重复,并使用... EXISTS ( SELECT * FROM dbo.Votes WHERE EntryId = @EntryId AND VoterUserId = @VoterUserId )
检查用户是否已对某个条目进行了投票。