我对编写sql有些新意,我知道我可以编写带有可选参数的存储过程。如何指定可选参数,但强制要求至少需要一个可选参数。这可能吗?
我希望能够使用存储过程将行插入到日志表中,其中有许多类型标志以显示它是什么类型的条目。因此,至少应将其中一个标志设置为true(1)。
答案 0 :(得分:2)
我认为在这种情况下最好的方法是只定义一个参数,例如ENUM类型,将表示“标志的女巫必须设置为true”。它不会是一个optionnal参数,因为至少有一个标志必须设置为true。 日志表中的标志列必须为DEFAULT false或DEFAULT NULL。
您将在过程中使用IF语句在插入的日志值中将适当的标志设置为1(您应该为每个标志声明一个临时变量并将相应的标志设置为1)。
(另外,如果你想约束你的日志条目至少有一个标志为1,你可以写一个before insert和一个before update触发器。)