我有一个包含可由用户排序的项目的列:
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语法是什么?
添加类似默认值的语法
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
如果有人想使用界面进行操作,请输入
[dbo].[NEWDOC_Order]()
诀窍.您显然需要所有括号,否则它将拒绝您的输入.