当前位置:  开发笔记 > 编程语言 > 正文

数据库表是否应具有默认值?

如何解决《数据库表是否应具有默认值?》经验,为你挑选了2个好方法。

我正在与一位开发人员讨论如果表使用默认值的问题.对此有一个严格的规则,还是最佳实践中的灰色区域?



1> FrustratedWi..:

我的规则:如果许多记录将使用该默认值(至少最初),那么我喜欢将其用作默认值.例如,在线商店中产品的图像表可能具有默认路径images/NoPictureYet.png.最终,这些将被替换,但对于批量加载的数据,其中图片根本不存在(并且可能大部分都不会!),默认是有意义的(至少对我来说).

如果没有合理的默认值(例如客户数据库中的"名字" - 我不希望我的名字默认为"FirstName"),那么我将其设为不可为空且无默认值 - 应用程序有责任确保输入正确的值.

但对此没有严格的规定.这一切都有所不同;)



2> Daniel Vassa..:

我亲自发现使用默认值的一个实际案例是last_modified列.

此列永远不会被存储过程或业务逻辑更新,但当行中的任何值更改时,触发器会自动更新.但是,它也GETDATE()默认设置为,以便新行的值包含创建时间的时间戳,基本上是上次修改时的时间戳.

ALTER TABLE users ADD CONSTRAINT dc_users_last_modified
                  DEFAULT GETDATE()
                  FOR last_modified;

然后更新触发器看起来像这样:

CREATE TRIGGER trigUpdate_users 
ON users 
FOR UPDATE 
AS 
BEGIN 
    IF NOT UPDATE(last_modified) 
        UPDATE users SET last_modified = GETDATE() 
        WHERE user_id IN (SELECT user_id FROM inserted);
END 
GO


真正意义上的不是"默认".
推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有