我正在整理一个写入数据库的小型Web应用程序(Perl CGI和MySQL).CGI脚本从表单中获取一些信息并将其写入数据库.但是,我注意到,如果我在网络浏览器上点击"重新加载"或"返回",它会再次将数据写入数据库.我不想要这个.
在这种情况下,防止重写数据的最佳方法是什么?
我在刷新时插入重复项有问题.我们这里的团队决定在sql中使用'if exists'是阻止重复插入的最佳方法.但是,如果参数设置为null怎么办?
string cmdText = " if (not exists(select * from table where field1 = @field1 and field2 = @field2 and field3 = @field3)) Insert into table(field1,field2,field3) Values(@field1,@field2,@field3)";
if (txtfield1.text != "")
cmd.Parameters.Add(new SqlParameter("@field1", txtfield1.text));
else
cmd.Parameters.Add(new SqlParameter("@ field1", DBNull.Value));
cmd.Parameters.Add(new SqlParameter("@field2", txtfield2));
cmd.Parameters.Add(new SqlParameter("@field3", txtfield3));
Run Code Online (Sandbox Code Playgroud)
当field1中存在空值时,这不起作用.