【发布时间】:2016-11-08 22:49:02
【问题描述】:
我的SQL代码如下:
CREATE TABLE personsdb
(personID int IDENTITY(1,1) NOT NULL,
personName varchar(50) NOT NULL,
associatedWith varchar(50) NOT NULL,
CONSTRAINT pk_persondb PRIMARY KEY (personID),
CONSTRAINT uq_persondb UNIQUE (associatedWith))
INSERT INTO personsdb
(personID, personName, associatedWith)
VALUES
('John', 'Mary'),
('Jack', 'Maggie'),
('Jeff', 'Marie')
我在“associatedWith”列上有一个唯一约束,因为我想确保 personName 中的一个人只能与 associatedWith 中的一个人相关联,即 Mary 不能与 Jeff 相关联,因为 Mary 已经与约翰。
我的查询与插入表的下一行有关。我想在 personName 列中插入“玛丽”,但需要一个自动填充或只允许在相应的“关联”字段中填充“约翰”的规则,因为一个人只能与另一个人关联,并且作为约翰已经与 Mary 关联,当 Mary 被输入到表中时,她应该自动与 John 关联。
我对 SQL 比较陌生,但我想自己尽可能地弄清楚 - 如果你能暗示一种方法来做到这一点(用外行的话),我将不胜感激,以便我可以去并研究并学习如何做到这一点。
非常感谢您的帮助。
大卫
【问题讨论】:
-
这适用于哪个 RDBMS?请添加标签以指定您使用的是
mysql、postgresql、sql-server、oracle还是db2- 或其他完全不同的东西。 -
嗨,Marc,抱歉 - 我正在使用 MS SQL Management Studio。谢谢,大卫
-
听起来你想要一个触发器,如果没有提供值,它将填充
associatedWith字段的值,或者检查提供的值。 msdn.microsoft.com/en-us/library/ms189799.aspx -
没问题,我没有使用触发器的经验,否则我会发布一个示例。当你得到一个满足你要求的作品时,你会在这里分享吗?
标签: sql sql-server unique auto-populate