mysql使两个类别彼此独特

时间:2016-09-10 12:38:02

标签: php mysql sql cs50

我有一行名为user_id和symbol。我想这样做,所以每个user_id只能有一个符号。

这是我写这篇文章的行

ALTER TABLE  `portfolio` ADD UNIQUE (
`user_id` ,
`symbol`
);

然而,这使得我也不能拥有一次user_id。因此,如果我添加一个user_id = 21且symbol = AAA的列,我就无法添加另一个列,其user_id = 21且符号= BBB。

你的想法

2 个答案:

答案 0 :(得分:2)

以下约束完全符合您的要求:它确保每个用户/符号组合仅出现一次:

.tabs {
  left: 50%;
  transform: translateX(-50%);
  position: relative;
  background: white;
  width: 90%;
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
  border-radius: 5px;
  min-height:120px;
  padding:7px;
  overflow:visible;
}
.tabs h1 {
    font-size: 1.5em;
    font-family: 'Fjalla One', sans-serif;
    color:#475f93;
    font-weight:400;
    border-bottom:1px solid #475f93;
}

.tabs .p {
    color:#121417;
    font-size:14px;
    font-family: 'Raleway', sans-serif;
}

添加约束时的一个好习惯是为它们提供有意义的名称:

ALTER TABLE portfolio ADD UNIQUE (user_id, symbol);

这样,当违反约束时,您就知道违反了哪个约束。如果您无法为用户添加其他符号,则可能会将ALTER TABLE portfolio ADD CONSTRAINT unq_portfolio_userid_symbol UNIQUE(user_id, symbol); (或user_id)声明为表中的主键或唯一本身或作为另一个唯一列的一部分。

答案 1 :(得分:0)

Hi Menan
在这种情况下,您可以使用复合主键

ALTER TABLE portfolio add 
constraint pkc_portfolio primary key (id, code); 

您的ID和代码组合不会重复