【问题标题】:Is there a way to create an SQL SERVER table with unique rows?有没有办法创建具有唯一行的 SQL SERVER 表?
【发布时间】:2016-05-23 07:33:23
【问题描述】:

我希望我的表有唯一的行,但不是唯一的列。这是一个选择吗?我希望能够在同一列中的多行上具有相同的值,但不是另一行的 100% 副本...

我看到this 的问题,但它是关于 MySQL 的,我需要它用于 SQL SERVER。

我的具体表(conversation-staffer)是这样的:

conversation_id | staffer_id | handled

谢谢。

【问题讨论】:

  • @Downvoter - 这个问题有什么问题?
  • 我只是在猜测 - 但您的问题缺少信息、表结构、数据样本、所需的输出。
  • @sagi,只有我一个人吗?还是你们说的是希伯来语?
  • @FelixPamittan - 是的。我告诉他我的问题是一般性的,与任何特定的表无关,也与输出无关。我只在评论中的后续问题中寻求您的帮助,但您确实回答了我的问题。我的英语不太好,所以我试着用我们的母语解释。
  • @FelixPamittan 是的,为什么?:)

标签: sql-server unique


【解决方案1】:

您可以添加一个包含表所有列的唯一索引:

CREATE UNIQUE INDEX <index name> ON <tablename>(<columns>); 

或者,您可以将所有列设置为主键。但是如果表已经有,你必须先删除PK

ALTER TABLE <tablename> DROP CONSTRAINT <constraint_name>;    
ALTER TABLE <tablename> ADD PRIMARY KEY (<columns>);

【讨论】:

  • 那样我可能不得不与一些列相似的不同行?
  • 如果将所有列都放在唯一索引或 PK 中,则不能在所有列上都有具有相同数据的行。如果某些列可以具有相似的数据,那么您将它们排除在索引的列列表中。
  • 如果您添加一个包含所有列的UNIQUE INDEX,那么每个唯一的组合行值只能存储一次,但在每个单独的内部列或列的子集,您可以有重复项。
  • 您能否编辑您的表“conversation-staffer”和列“conversation_id”、“staffer_id”、“handled”的代码?我的 SQL 不是很厉害:\
  • 请为这个问题投票。我不明白为什么它被否决了。如果值得回答,那么值得质疑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 2021-12-08
  • 1970-01-01
  • 2019-12-25
相关资源
最近更新 更多