mssql创建表的时候要写一个默认值,默认值要用到子查询,不知道该怎么写CREATE TABLE [dbo].[allmess](
[ID] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
[PID] [int] NULL DEFAULT ((-1)),
[nameCon] [varchar](400) NULL,
[pwd] [varchar](400) NULL,
[sortID] [bit] NULL DEFAULT ((0)),
[perID] [bit] NULL DEFAULT ((0)),
[orderBy] [int] DEFAULT ((select max(orderBy) from allmess)),
[typeCon] [varchar](400) NULL,
[classCon] [varchar](400) NULL,
[readCount] [int] NULL DEFAULT ((1)),
[writerCon] [varchar](400) NULL,
[photo] [varchar](400) NULL,
[fileCon] [varchar](400) NULL,
[txt] [text] NULL,
[bkbit] [bit] NULL,
[bkint] [int] NULL,
[bkvc] [varchar](400) NULL,
[createTime] [datetime] NULL,
)

解决方案 »

  1.   

    CREATE FUNCTION BH()
    RETURNS int
    AS
    BEGIN
    RETURN(select max(orderBy) from allmess WITH(XLOCK,PAGLOCK))
    END
    GO
    CREATE TABLE [dbo].[allmess](
    [ID] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
    [PID] [int] NULL DEFAULT ((-1)),
    [nameCon] [varchar](400) NULL,
    [pwd] [varchar](400) NULL,
    [sortID] [bit] NULL DEFAULT ((0)),
    [perID] [bit] NULL DEFAULT ((0)),
    [orderBy] [int]  DEFAULT dbo.BH(),
    [typeCon] [varchar](400) NULL,
    [classCon] [varchar](400) NULL,
    [readCount] [int] NULL DEFAULT ((1)),
    [writerCon] [varchar](400) NULL,
    [photo] [varchar](400) NULL,
    [fileCon] [varchar](400) NULL,
    [txt] [text] NULL,
    [bkbit] [bit] NULL,
    [bkint] [int] NULL,
    [bkvc] [varchar](400) NULL,
    [createTime] [datetime] NULL,
    )
      

  2.   


    CREATE FUNCTION BH()
    RETURNS int
    AS
    BEGIN
        RETURN(select max(orderBy) from allmess WITH(XLOCK,PAGLOCK))
    END
    GO这个函数我想判断一下  如果查询出来的是空的话就返回1  该怎么写呢?
      

  3.   

    --try
    CREATE FUNCTION BH()
    RETURNS int
    AS
    BEGIN
      RETURN isnull((select max(orderBy) from allmess WITH(XLOCK,PAGLOCK)),1)
    END
    GO