我有一行名为user_id和symbol。我想这样做,所以每个user_id只能有一个符号。
这是我写这篇文章的行
ALTER TABLE `portfolio` ADD UNIQUE (
`user_id` ,
`symbol`
);
然而,这使得我也不能拥有一次user_id。因此,如果我添加一个user_id = 21且symbol = AAA的列,我就无法添加另一个列,其user_id = 21且符号= BBB。
你的想法
答案 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和代码组合不会重复