【问题标题】:implement uniqueness , constraints while inserting data in a column with another column在将数据插入到另一列的列中时实现唯一性、约束
【发布时间】:2011-07-09 07:46:11
【问题描述】:

我有一个表 A,其中包含 Aname 、 Work 列

create table A(Aname varchar(40) , Work varchar(40) )

表格已经插入了以下数据:

INSERT INTO A VALUES ('GREAME ','PLAYER')

名字 ||工作

GREAME PLAYER

现在我希望当我插入新记录时,Aname--GREAME,Work--SALESMAN,然后是

已插入,但如果我再次插入:Aname--GREAME Work--PLAYER,则不会插入

我想要这个:

名字 ||工作

GREAME PLAYER

GREAME PLAYER --- 无法插入

GREAME SALESMAN --- 可以插入

也就是说,当要插入Aname的值时,Work列检查唯一性

已经存在。

我该如何实现呢?请帮忙写代码。

编辑------

在插入查询中,Aname 列将从另一个表 B 中提取 那我该怎么做呢?

【问题讨论】:

  • ALTER TABLE A 添加约束 PK_A PRIMARY KEY (Aname,Work)

标签: c# .net sql sql-server sql-server-2005


【解决方案1】:

唯一约束或主键会阻止您插入错误/异常。这个插入不会插入它已经存在的行。

insert into A (Aname, Work)
select 'GREAME', 'PLAYER'
where not exists (select *
                  from A
                  where Aname = 'GREAME' and Work = 'PLAYER')

【讨论】:

  • 非常感谢先生,您的回答对我很有帮助,但我只能接受一个,如果这不是一个规则,我会接受所有张贴在这里 -
  • @sqlchild 请向 SO 添加一个新问题,在其中包含此插入语句和两个表的数据模型以及您想要做什么的描述。如果您提供表的示例数据以及插入后的预期结果应该是什么,那也很棒。
  • stackoverflow.com/questions/5216292/… ------- 先生,我在这里发布了新问题
【解决方案2】:

如果您需要 AName 和 Work 的组合是唯一的,那么

ALTER TABLE A ADD CONSTRAINT U_NameWork UNIQUE(AName, Work)

但是,如果您需要 AName 是唯一的,而与工作无关,那么

ALTER TABLE A ADD CONSTRAINT U_Name UNIQUE(AName)

编辑:根据 SanjeevKumar,如果您没有其他 PK,则将 (AName, Work) 设为复合主键也可以,尽管您也可以考虑使用代理 PK。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-27
    • 2020-05-16
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2011-02-24
    • 2012-08-10
    • 2010-10-11
    相关资源
    最近更新 更多