我正在尝试创建一个临时登录链接URI,用于单独使用mysql获取对安全区域的“可查看”访问权限。我们的想法是将字段的值设置为给定的sha1值。
sha1值将通过连接几个随机字段和一个盐来确定。 (我不确定这是不是很好的做法)
以下内容返回一个语法错误,我非常确定在子查询中使用相同的表名。有没有明智的方法来实现这一目标?我能用PHP做到这一点,但我正在努力开发自己的SQL技能。
任何有关“最佳实践”的建议也表示赞赏。
update rsvp set rsvp.rsvpViewHash = sha1(select sha1(concat(rsvp.rsvpURLSlug, rsvp.rsvpCreated, 'salt')) from rsvp);
答案 0 :(得分:1)
有几个问题:
sha1()
的合适参数,但我对mysql不太熟悉以了解事实。无论如何,根本不需要子查询。简化如下:
UPDATE rsvp
SET
rsvpViewHash = CAST(sha1(concat(rsvpURLSlug, rsvpCreated, 'salt')) AS CHAR(10000) CHARACTER SET utf8)
WHERE
-- conditions
;
的 EDITED 强> 的
将blob结果从blob转换为char;假设目标字段rsvpViewHash
能够存储CHAR(10000)