说明
最近写了一点Mysql数据库东西,记录一下使用方法
步骤
1.创建触发器(自动计算content_hash)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| DELIMITER //
CREATE TRIGGER before_insert_oneSentence
BEFORE INSERT ON oneSentence
FOR EACH ROW
BEGIN
-- 插入前自动计算content的MD5值
IF NEW.content_hash IS NULL THEN
SET NEW.content_hash = LOWER(MD5(NEW.content)); -- 转小写确保一致性
END IF;
END;
//
DELIMITER ;
|
2.为旧数据补充content_hash
1
2
3
4
5
6
7
| -- 先处理旧数据(无content_hash的记录)
UPDATE oneSentence
SET content_hash = LOWER(MD5(content))
WHERE content_hash IS NULL;
|
3.添加唯一索引(防重复)
1
2
3
4
5
| -- 确保content_hash列有唯一索引
ALTER TABLE oneSentence
ADD UNIQUE INDEX idx_unique_content_hash (content_hash);
|
问题
如果以前创建过,会报:
1
| Warning: #1831 Duplicate index 'idx_unique_content_hash' defined on the table xxx
|
这个错误是有重复的索引
1.查看所有索引
1
| SHOW INDEX FROM your_table_name;
|
2.删除重复的索引
1
| DROP INDEX idx_unique_content_hash ON your_table_name;
|