--直接定义一个计算列CREATE TABLE [dbo].[t] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
          [name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL, 
[xlh]  as 'my'+left('10000000',8-len([id]))+cast([id] as varchar(100)) 
) insert into t select 'a'
id          name       xlh   
--        ---        ------
1           a          my10000001

解决方案 »

  1.   

    CREATE TABLE [dbo].[t] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
              [name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [xlh] [char] (10) COLLATE Chinese_PRC_CI_AS NULL 

    CREATE TRIGGER UP_t ON t
    FOR INSERT
    AS
      update t set xlh='my' + cast((10000000+inserted.ID) as char) from t,inserted where t.id=inserted.idinsert t select 'A',NUllselect * from t
      

  2.   

    zlp321002 的方法我觉得不行,我是想这一列的数据一般情况下是通过上面的规则进行插入数据的,有时是直接定好值进行插入数据的,按你的方法就不行了!scmail81(freedom) 的方法要声明一个游标,能不能有更简单的办法呢?谢谢!
      

  3.   

    Create PROCEDURE test
    AS
    DECLARE @Cid intDECLARE test_cursor CURSOR 
    FOR SELECT [id] FROM a OPEN test_cursor
    FETCH NEXT FROM test_cursor INTO @Cid WHILE (@@fetch_status <> -1)
    BEGIN
    BEGIN
    declare @xlh varchar(8000)
    set @xlh = 'my' + '10000000' + CAST(@Cid AS varchar(100))
    insert into t ([xlh]) values (@xlh)
    END
    FETCH NEXT FROM test_cursor INTO @Cid
    ENDCLOSE test_cursor
    DEALLOCATE test_cursor
    GO
    大概这样吧.