Привязать значение столбца по умолчанию к функции в SQL 2005 - PullRequest
13 голосов
/ 14 января 2009

У меня есть столбец, содержащий элементы, которые могут быть отсортированы пользователем:

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

Я пытаюсь найти способ правильно инициализировать DOC_Order при создании записи. Хорошим значением будет либо соответствующий DO-CID (так как он присваивается автоматически), либо MAX (DOC-ORDER) + 1

После небольшого поиска в Google я увидел, что можно присвоить возвращение скалярной функции столбцу по умолчанию.

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 »».

Любое представление о том, что такое точный синтаксис SQL для назначения функции для DEFAULT?

Ответы [ 3 ]

22 голосов
/ 14 января 2009

Синтаксис для добавления значения по умолчанию будет

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

Кроме того, вы можете изменить свою функцию для обработки, когда DOC_Order имеет значение null

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

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

END
7 голосов
/ 14 января 2009

Если кто-то хочет сделать это с помощью интерфейса, наберите

[dbo].[NEWDOC_Order]()

делает свое дело. Очевидно, вам нужны все скобки, иначе он отклонит ваш ввод.

1 голос
/ 29 января 2016

Вот снимки экрана, чтобы сделать это через графический интерфейс SQL Server Management Studio:

  1. Щелкните правой кнопкой мыши по таблице и выберите Design

enter image description here

  1. Выберите DOC_Order столбец (или другой столбец, требующий значения по умолчанию) в представлении конструктора таблицы, чтобы увидеть Свойства

enter image description here

  1. Обновление Default Value or Binding с именем функции в скобках вот так:

enter image description here

Примечание: как сказал Лук, нужны все скобки, включая схему (в данном случае dbo ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...