即使基础表只包含唯一的行,视图也可能会生成重复的行。如果视图的 SELECT 语句可能返回重复的行,那么视图本身可能显示为包含重复的行。
可通过两种方法防止此问题。一种方法是在视图中的投影列表中指定 DISTINCT。但是,当指定 DISTINCT 时,无法使用视图进行修改。备用方法是始终选择已约束为必须唯一的列或一组列。(如果选择主键或候选键的列,那么可以确保只返回唯一的行。构建关系数据模型包含有关主键和候选键的信息。)