Auf*_*ind 4 python mysql hash triggers insert
我很想在MySQL中创建一个触发器,这样每次我将一个值插入一个名为title
HASH 的列时,都应该创建并存储在列中title_hash
.由于我不知道这是如何工作的,我在google搜索时发现了这个代码:
CREATE TRIGGER insertModelHash
BEFORE
INSERT
ON
products
FOR EACH ROW SET
NEW.model_hash = CONV(RIGHT(MD5(NEW.products_model), 16), 16, 10)
Run Code Online (Sandbox Code Playgroud)
MySQL-reference告诉我,这意味着:
insertModelHash
...products
......MD5, RIGHT, CONV
列上的函数products_model
.3.点需要更多解释:
NEW
是新行的某种标识符.所以NEW.products_model
指向products_model
当前(新)行中的列.MD5
发出.由于我想使用SHA-2,因此我很明显可以更改MD5(NEW.products_model), 16)
===> SHA2(NEW.products_model), 224)
.CONV(RIGHT(...)...)
?这真的有必要吗?补充信息:现在,我正在做
hashlib.sha224(title).hexdigest()
Run Code Online (Sandbox Code Playgroud)
在Python中存储此值.
我感谢任何建议/解释!
回答你的三个问题:
该NEW
关键字引用"伪表"的,将被插入的记录.在更新的触发器上,您可以访问"新"和"旧",在删除时,只需"老".
是的,MD5用于创建哈希.但是,在您的问题中,您包含了"RIGHT"功能的部分参数.它是唯一的MD5(NEW.products_model)
(没有, 16)
.是的,你可以用SHA2代替MD5,如果它可用的话(它只有在MySQL配置为支持SSL时才可用).
在RIGHT(string, number)
简单地采取从"串"右"数"字符.CONV()函数用于转换基数之间的数字.这两个函数的组合采用散列的正确16个字符,并将它们从基数16(十六进制)转换为基数10(十进制).
答案是否定的,如果您只想存储哈希本身,则不需要它们.
NEW.model_hash = SHA2(NEW.products_model)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2526 次 |
最近记录: |