当前位置:  开发笔记 > 数据库 > 正文

将列默认值绑定到SQL 2005中的函数

如何解决《将列默认值绑定到SQL2005中的函数》经验,为你挑选了2个好方法。

我有一个包含可由用户排序的项目的列:

DOC_ID  DOC_Order DOC_Name
   1       1        aaa
   2       3        bbb
   3       2        ccc

我正在尝试找到一种方法来在创建条目时正确初始化DOC_Order.一个好的值可能是相应的DO-CID(因为它是自动分配的),或MAX(DOC-ORDER)+ 1

经过一些谷歌搜索后,我看到可以将标量函数的返回值分配给默认列.

CREATE FUNCTION [dbo].[NEWDOC_Order] 
(
)
RETURNS int
AS
BEGIN

RETURN (SELECT MAX(DOC_ORDER) + 1 FROM DOC_Documents)

END

但是,我使用MS SQL Management Studio的每次尝试都以"验证列'DOC_Order'的默认值"错误消息结束.

知道将函数分配给DEFAULT的确切SQL语法是什么?



1> cmsjr..:

添加类似默认值的语法

alter table DOC_Order 
add constraint 
df_DOC_Order 
default([dbo].[NEWDOC_Order]())
for DOC_Order

此外,您可能希望更改函数以在DOC_Order为空时进行处理

Create FUNCTION [dbo].[NEWDOC_Order] 
(
)
RETURNS int
AS
BEGIN

RETURN (SELECT ISNULL(MAX(DOC_ORDER),0) + 1 FROM DOC_Documents)

END



2> Luk..:

如果有人想使用界面进行操作,请输入

[dbo].[NEWDOC_Order]()

诀窍.您显然需要所有括号,否则它将拒绝您的输入.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有