首先寫了個自定義函數 
CREATE FUNCTION f_EmpId()
RETURNS nchar(17)
AS
BEGIN
    
    RETURN(SELECT 'CMI'+CONVERT(varchar,GETDATE(),112)+RIGHT(100+ISNULL(RIGHT(MAX(EmpId),3),0),3) 
    FROM Init_Employee WITH(XLOCK,PAGLOCK))
END
GO怎樣把它作為表Init_Employee的EmpId默認值啊,我直接在表Init_Employee-修改-選中列EmpId-默認值或綁定-輸入f_EmpId(),出入數據時EmpId的列就是 f_EmpId(),請問應該怎麼寫

解决方案 »

  1.   

    CREATE TABLE Init_Employee (
    EmpId char(8) PRIMARY KEY DEFAULT dbo.f_EmpId(),
    col int)
      

  2.   

    你这个自定义函数貌似有问题呀,能通过编译码?自定义函数不能使用getdate()
      

  3.   

    自定義函數,自己解決,應寫作([dbo].[f_EmpId]()),否則會當做字符!
      

  4.   

    WITH(XLOCK,PAGLOCK))
    对其他表,查询效率产生影响,建议使用!!
      

  5.   

    或者用instead of 触发器来实现如果添加后记录还要作处理,最好生成值后直接添加,可知添加记录的主键。