我有以下表格:
a) Images (Columns : imageId{PK Int} )
b) Users (Columns : username {PK varchar(50), ...}
c) Ratings (Columns : imageId {FK}, username {FK}, Stars {int})
我希望评级表不要有任何重复记录,如下所示:
1, Amigo, 5 (This is right)
1, Durango, 3 (This is right)
1, Amigo, 3 (WRONG) Amigo should not be allowed to add new record but only update
如何通过建立关系而不是从应用程序端处理此关系,从数据库端执行此操作。我不想进行后端调用并检查此记录是否存在,如果是,请更新,但我想要的是数据库是聪明的不要通过抛出异常来添加它,我将捕获广告更新记录而不是要么 如果DB可以只更新它会很酷。请指导我该怎么做。
答案 0 :(得分:0)
在Ratings表中的ImageId和UserName上添加UNIQUE约束。看一下这里的文档:
http://msdn.microsoft.com/en-us/library/ms191166.aspx
你的alter语句看起来像这样:
ALTER TABLE [dbo].[Ratings]
ADD CONSTRAINT UNQ_Ratings UNIQUE (imageId, username)