仅当所有值都存在时才插入新的MYSQL行

仅当所有值都存在时才插入新的MYSQL行,mysql,Mysql,我正在尝试设计一个MySQL查询,如果所有字段都有一个值存在,则只向现有表中添加一个新行,否则应该删除/忽略它 我现时的质询如下: INSERT INTO markers (`name`, `address`, `details`, `date`, `link`, `lat`, `lng`, `type`) VALUES ("{1}", "{2}", "{3}", "{15}", "{4}", "{11}", "{12}", "{5}") 如果我的表单将{15}留空,那么我不希望将任

我正在尝试设计一个MySQL查询,如果所有字段都有一个值存在,则只向现有表中添加一个新行,否则应该删除/忽略它

我现时的质询如下:

 INSERT INTO markers (`name`, `address`, `details`, `date`, `link`, `lat`, `lng`, `type`)
    VALUES ("{1}", "{2}", "{3}", "{15}", "{4}", "{11}", "{12}", "{5}")
如果我的表单将
{15}
留空,那么我不希望将任何其他值添加到表中

希望这有意义


谢谢

我要说的是,用Java、C#、Swift等工具检查前端的输入。然后,如果条目为空,只需弹出一条消息,让您的用户知道填写每个字段,或者让您的应用程序跳过该记录。

我建议您使用两种不同的解决方案

您可以将数据库设置为不允许空值,然后当您转到insert时,处理空错误(可能不是最好的解决方案)。如果需要空值,那么必须在代码中处理


另一件事是实现表单验证。您可以使用JavaScript、代码隐藏,甚至两者兼而有之。建议两者都使用,因为有些人可能在浏览器上禁用了JavaScript

如果希望直接在MySQL中执行此操作,可以创建一个触发器,在插入值之前检查这些值,如果未满足某些验证规则,则抛出一个错误

示例:

delimiter $$
create trigger no_emtpy_values before insert into markers
for each row
begin
    declare msg varchar(255);
    declare condition_fail int default 0;
    -- Write the appropriate validations and set condition_fail to 1
    -- if the validations are not fulfilled. For example:
    if NEW.`date` IS NULL then
        set condition_fail = 1;
    end if;
    -- That "NEW" refers to the row about to be inserted

    -- If the validation rules are not fulfilled, throw an error:
    if condition_fail then
        set msg = "You can't insert the data!";
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
    end if;
end $$
delimiter ;
参考资料:


希望这对您有所帮助

您应该检查并处理处理表单提交的脚本语言中的任何输入值(您没有指定)。如果(!empty('field-name')&&&&!empty('second-field')){--您的查询--}正在使用PHP还是其他什么?发布您的完整代码,然后我们可以帮助您。感谢绿辣椒,添加了一个非空排序:0)