在我的网站上,我允许我的用户更新他们的电子邮件地址。但是,我要求每个电子邮件地址都是唯一的。如何确保在更新表单中输入的电子邮件地址在更新数据库之前是唯一的?
答案 0 :(得分:1)
在存储电子邮件地址的列上有unique constraint。
您可以使用UNIQUE约束来确保没有重复的值 输入不参与主要的特定列 键。
盲目地插入具有唯一约束的表将引发异常。要避免这种情况,请在where子句中运行select查询以检查此电子邮件地址。
如果您拥有庞大的用户群,请务必为您的电子邮件列编制索引。
答案 1 :(得分:0)
假设桌子上有一些钥匙,你的初始陈述是:
UPDATE dbo.foo SET Email = @Email WHERE Key = @key;
然后您可以先检查值:
IF EXISTS (SELECT 1 FROM dbo.foo WHERE Email = @Email AND Key <> @Key)
BEGIN
RAISERROR('Sorry, that e-mail is already in use.', 11, 1);
END
ELSE
BEGIN
UPDATE dbo.foo SET Email = @Email WHERE Key = @key;
END
现在,你应该对表格有一个限制,例如
ALTER TABLE dbo.foo ADD CONSTRAINT UQ_Email
UNIQUE(Email);
但即使存在约束as I demonstrated here,首先检查违规行为仍然是有益的。
答案 2 :(得分:-1)
我的第一个建议是将其定义为表格see this中的唯一列。或者,在我看来,这不是一个非常好的方法(但可能由于某种原因你不控制表),你可以在你的插入语句中检查这一点。如果您可以提供更多信息(表格结构/插入声明),我将能够为您提供更好的答案。