복붙노트

[SQL] 바인드 SQL 2005에서 함수에 열 기본값

SQL

바인드 SQL 2005에서 함수에 열 기본값

나는 사용자가 정렬 할 수있는 항목을 포함하는 열이 :

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

엔트리가 생성 될 때 제대로 DOC_Order 초기화에 나는 방법 알아 내려고 노력하고있어. 좋은 값이 어느 DO-CID (autoassigned이되므로), 또는 MAX (DOC-ORDER)에 대응 한 것 +

I 인터넷 검색의 비트를 본 후에는 기본 열에 스칼라 함수의 반환을 할당 할 수 있었다.

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

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

END

그러나 메시지 "열 'DOC_Order'의 기본을 검증 오류"는 끝난 MS SQL 관리 스튜디오를 사용하여 내 시도의 각.

DEFAULT가 무엇 정확한 SQL 구문의 어떤 생각 기능을 할당하는?

해결법

  1. ==============================

    1.그 것 같은 구문은 디폴트를 추가하는

    그 것 같은 구문은 디폴트를 추가하는

    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
    
  2. ==============================

    2.누군가가 인터페이스를 사용하여 작업을 수행하고자하는 경우, 입력

    누군가가 인터페이스를 사용하여 작업을 수행하고자하는 경우, 입력

    [dbo].[NEWDOC_Order]()
    

    트릭을 수행합니다. 당신은 분명히 모든 브래킷이 필요하거나 당신의 입력을 거부합니다.

  3. ==============================

    3.다음은 SQL Server Management Studio를 GUI를 통해 할 스크린 샷입니다 :

    다음은 SQL Server Management Studio를 GUI를 통해 할 스크린 샷입니다 :

    참고 : 눅가 언급 한 바와 같이, 모든 브라켓 (이 경우 DBO) 스키마를 포함한 필요하다.

  4. from https://stackoverflow.com/questions/442503/bind-a-column-default-value-to-a-function-in-sql-2005 by cc-by-sa and MIT license