在存储过程中使用带有可选参数的insert

时间:2012-02-08 22:27:09

标签: sql sql-server tsql stored-procedures

我对编写sql有些新意,我知道我可以编写带有可选参数的存储过程。如何指定可选参数,但强制要求至少需要一个可选参数。这可能吗?

我希望能够使用存储过程将行插入到日志表中,其中有许多类型标志以显示它是什么类型的条目。因此,至少应将其中一个标志设置为true(1)。

1 个答案:

答案 0 :(得分:2)

我认为在这种情况下最好的方法是只定义一个参数,例如ENUM类型,将表示“标志的女巫必须设置为true”。它不会是一个optionnal参数,因为至少有一个标志必须设置为true。 日志表中的标志列必须为DEFAULT false或DEFAULT NULL。

您将在过程中使用IF语句在插入的日志值中将适当的标志设置为1(您应该为每个标志声明一个临时变量并将相应的标志设置为1)。

(另外,如果你想约束你的日志条目至少有一个标志为1,你可以写一个before insert和一个before update触发器。)