我有一个很长的数据库字段(2083个字符),因此我无法在MySQL中为它设置UNIQUE约束。为MySQL数据库中的long varchar字段强制使用唯一值
我试过修改存储过程,所以我可以检查试图插入的值是否是唯一的,如果不是,则停止插入。但是,存储过程总是错误。我已经尝试了很多不同的语法。这真是奇怪,存储过程很好,只有if语句或插入,但不与两者。
感谢任何帮助。
BEGIN
SET @insertedid := 0;
SET @alreadyfound := 0;
SELECT COUNT(lref_id) FROM listing_referrers WHERE lref_referring_url=in_lref_referring_url INTO @alreadyfound;
IF (@alreadyfound = 0) THEN
BEGIN
INSERT INTO listing_referrers (lref_listing_id,lref_referring_url,lref_createdby_userid,lref_created) VALUES (in_lref_listing_id, in_lref_referring_url, in_lref_createdby_userid, in_lref_created);
SET @insertedid = last_insert_id();
END
SELECT @insertedid;
END
我会在触发部分使用'IF EXISTS(SELECT ...)THEN ...'。 –
@PaulSpiegel请随时调整我的答案 - 我已经把它作为一个社区wiki条目,所以你应该被允许改变它。 – EagleRainbow
哇,非常感谢你的全面回答。哈希键列可能最吸引我。如此优雅简单!我会运行一些测试,并让你知道我如何继续。 – ChrisFNZ