【问题标题】:MySQL SHA256 with Insert Statement带有插入语句的 MySQL SHA256
【发布时间】:2016-04-15 05:43:19
【问题描述】:

我想创建一个脚本来填充数据库进行测试。如何设置要散列的字符串并插入到数据库中?

我有:

INSERT INTO `loop`.`User`
(`userID`,
`firstName`,
`lastName`,
`email`,
`password`,
`userName`,
`bio`,
`spamCount`)
VALUES
('gZvTtlPtjGRqeMBaLji3HxoKB5EZCsNL',
'Joe',
'Smith',
'test0@email.com',
SHA2('testgZvTtlPtjGRqeMBaLji3HxoKB5EZCsNL', 256),
'test0@email.com',
"TEST BIO",
0);

如何在同一语句中对字符串和 INSERT 进行哈希处理?

【问题讨论】:

  • 你遇到了什么错误?

标签: mysql string hash insert


【解决方案1】:

您可以插入 SELECT 而不是 VALUES 以在其中一个输入上运行函数:

INSERT INTO `loop`.`User`
(`userID`,
 `firstName`,
 `lastName`,
 `email`,
 `password`,
 `userName`,
 `bio`,
 `spamCount`)
SELECT
'gZvTtlPtjGRqeMBaLji3HxoKB5EZCsNL',
'Joe',
'Smith',
'test0@email.com',
SHA2('testgZvTtlPtjGRqeMBaLji3HxoKB5EZCsNL', 256),
'test0@email.com',
"TEST BIO",
0;

【讨论】:

  • 您能再解释一下吗?我想了解。
  • 当您插入 VALUES 时,它们必须是直接向上的值(字符串、整数等),而不是解析为值的函数或子查询。但是,当使用 SELECT 语句时,不受这种方式的限制。
  • 谢谢你说得通!
【解决方案2】:

如果您表格中已经填满了一些内容,您可以使用以下内容对其进行更改:

ALTER TABLE `page` ADD COLUMN `hash` char(64) AS (SHA2(`content`, 256)) AFTER `content`

此解决方案将在content 之后添加hash 列,也为现有记录和新记录生成哈希,而无需更改您的 INSERT 语句。

【讨论】:

    猜你喜欢
    • 2015-01-27
    • 2011-06-30
    • 1970-01-01
    • 2018-09-25
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多