日期:2014-05-17  浏览次数:20607 次

sql中的auto
表中有一字段 datecreated ,想每次往表插入数据时 datecreated 字段
自动增加当前系统时间
SQL code
alter table ta
add datecreated date defalut getdate()

我知道上面的可以,但我不想用defalut ,defalut可以被用户修改
请问我该怎么写
datecreated 不是主键

------解决方案--------------------
SQL code

只能用default
不想被修改的话就使用触发器处理,或者前台程序控制,不让修改这一列

------解决方案--------------------
不给手工插入数据,通过用户权限管理来解决
------解决方案--------------------
可以换个角度,有没有考虑在前台来实现,
------解决方案--------------------
ta表的datecreated字段创建默认约束为getdate()。
然后在相关的insert语句、update语句中不出现datecreated字段的操作,比如:
insert into ta (这里的字段列表中不要出现datecreated字段) values (...)。因为你创建过默认约束了,SQL会自动根据默认的值getdate()将当前日期插入到datecreated字段中。
------解决方案--------------------
你可以让客户来输入数据,但是前端程序和数据库的存储过程或者sql语句要控制好,这样就可以避免客户乱改拉,用触发器一旦报错了调试起来不容易处理。