多个列组合为一行唯一性标志的问题

reb525 2014-04-01 12:29:50
CREATE TABLE [dbo].[Area](
[cID] [nvarchar](50) NOT NULL,
[cCode] [nvarchar](50) NULL,
[cCountry] [nvarchar](50) NULL,
[cRegion] [nvarchar](50) NULL,
[bUsing] [bit] NULL,
[cName] [nvarchar](50) NULL,
[cNote] [ntext] NULL,

这个表中

[cCode] [nvarchar](50) NULL,
[cCountry] [nvarchar](50) NULL,
[cRegion] [nvarchar](50) NULL,

3列同时不重复时 做为这一行的标识
已经创建索引
CREATE UNIQUE NONCLUSTERED INDEX [idex_1] ON [dbo].[Area]
(
[cCode] ASC,
[cCountry] ASC,
[cRegion] ASC

数据保存 新增没有问题



选择在另外一张表Customer中 PK Area



跟据cCode 带出 cCountry cRegion


如果 数据如下
cCode cCountry cRegion
A B C
A E F

那么选择 A 后 保存数据的时候会出现两条记录



这种问题怎么处理 跟据需求 cCode cCountry cRegion 中不可以设置 唯一值







...全文
362 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2014-04-01
  • 打赏
  • 举报
回复
应该只在cCode 字段上建唯一索引.
--小F-- 2014-04-01
  • 打赏
  • 举报
回复
如果要每行都是唯一值的话 可以去重复 但是你这样的数据时三列加一起不重复的 如果要保持整行所有数据都不重复 可以设置cCode为主键就可以了。
發糞塗牆 2014-04-01
  • 打赏
  • 举报
回复
cCode cCountry cRegion A B C A E F 这样的格式没有违反你的3列不重复的要求哦
reb525 2014-04-01
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
cCode cCountry cRegion A B C A E F 这样的格式没有违反你的3列不重复的要求哦
选择在另外一张表Customer中 PK  Area 跟据cCode 带出 cCountry cRegion 如果 数据如下  cCode  cCountry  cRegion A           B                 C A           E                 F 那么选择  A 后   保存数据的时候会出现两条记录  这种问题怎么处理  跟据需求   cCode  cCountry  cRegion 中不可以设置 唯一值 ================================= 我问的是上面的问题
reb525 2014-04-01
  • 打赏
  • 举报
回复
引用 3 楼 ap0405140 的回复:
应该只在cCode 字段上建唯一索引.
cCode 就是不能设置唯一 才有这个问题 需要解决 如果cCode 不允许空 不允许重复就不会有这个问题了

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧