【发布时间】:2011-07-11 13:48:32
【问题描述】:
对于具有默认约束的表,在 CREATE 和 UPDATE 存储过程中最好的做法是什么?
当我为表创建新列时,我尝试设置一个适当的默认值(默认约束)。
例子:
CREATE TABLE Orders
(
O_ID INT NOT NULL
,State INT DEFAULT 0 -- 0 => Not Verified, 1 => Verified, 2 => Processing ....
,P_ID INT
,OrderDate DATE DEFAULT GETDATE()
)
在这个表的 CREATE 和 UPDATE 存储过程中最好的做法是什么? 使用与约束中相同的默认值?
CREATE PROCEDURE UpdateOrder
(
@O_ID INT
,@State INT = 0
,@P_ID INT
,@OrderDate DATE
)
AS
UPDATE
Orders
SET
State = @State
,P_ID = @PID
,OrderDate = @OrderDate
WHERE
O_ID = @O_ID
【问题讨论】:
-
使用
{}按钮格式化代码示例 a) 比在需要换行符的地方插入大量手动
更容易,并且 b) 意味着代码获得了不错的语法突出显示。 -
很可能,
State列应该是 tinyint 而不是 4 字节 int。 -
感谢 Damien_The_Unbeliever 帮助我格式化代码。这是我的第一篇文章,所以我不太了解速度。我同意你的观点,KM 认为
TINYINT将是State列的更好的数据类型选择。
标签: sql-server sql-server-2008 default parameter-passing constraints