我在PK_Hash_ID
表格中有md5
以及FK_Hash_ID
表格中的Files
以下数据库2表格。
让我们说例如我需要插入新记录,
首先,我必须检查MD5
中是否存在MD5 table
,如果没有将其添加到MD5 table
和Files table
,
但如果它已经在MD5
上,那么只需要Hash_ID
并插入
将其转换为files
,其中一些其他值来自Parameters
,例如File_name
,Parent_Path
,DataType
等
考虑解决方案必须是存储过程,它需要参数
答案 0 :(得分:0)
使md5HASH列在md5表中唯一,通过它您可以确保其中不会有任何重复条目。尝试在md5表中插入每个MD5HASH,如果查询失败,如果错误是由于唯一键约束,则检查错误类型,这意味着如果没有错误HASH将插入到表md5中,则HASH已经存在。 示例代码就像
$sql = "insert into md5 values (null,'file_name',$hash)";
$result = mysqli_query($sql);
if( mysql_errno() == 1062) {
//write the code which you want to execute in case of hash already existing
} else {
//write the code where hash doesn't existed earlier, but now it has already added in database. No need to add again.
}
我希望这会有所帮助。
答案 1 :(得分:0)
使用IF EXISTS
语句解决。
BEGIN
If EXISTS (SELECT Hash_ID from MD5 Where MD5Hash = MD5Hash1)
Then
SELECT @H := Hash_ID from md5 where MD5Hash = MD5Hash1;
INSERT INTO MD5 Where MD5Hash = @H (Counter) values (+1);
INSERT INTO files (Hash_ID , File_Name , Path, Parent_Path , DataType )
values ( @H, FileName,Path, ParentPath, Type );
ELSE
Insert INTO md5 (MD5Hash, Counter ) VALUES (MD5Hash1,+1);
SELECT @H := Hash_ID from md5 where MD5Hash = MD5Hash1;
INSERT INTO files (Hash_ID , File_Name , Path, Parent_Path , DataType )
values ( @H, FileName,Path, ParentPath, Type );
End IF ;
end