create table topic
(
id char(14) primary key default datename(yy,getdate())+datename(mm,getdate())+datename(dd,getdate())+datename(hh,getdate())+datename(mi,getdate())+datename(ss,getdate())+datename(ms,getdate()),
title char(128)
)
上面语句创建了表后,在insert时,老是出错误,因为我只是插入title 的值,但是id没有值,就错误了.
但是我的语句不是有默认id值吗?怎么它不会自动产生呢?是不是我设定了关键字了啊?

解决方案 »

  1.   

    你的默认值可能超过14个字符,所以会出错,
    建议改大点,改为50?select  datename(yy,getdate())+datename(mm,getdate())+datename(dd,getdate())+datename(hh,getdate())+datename(mi,getdate())+datename(ss,getdate())+datename(ms,getdate())
      

  2.   

    --把id char(14) 改为id char(16)create table topic 

    id char(16) primary key default datename(yy,getdate())+datename(mm,getdate())+datename(dd,getdate())+datename(hh,getdate())+datename(mi,getdate())+datename(ss,getdate())+datename(ms,getdate()), 
    title char(128) 
    ) insert into topic(title) values('aa')
    select * from topicdrop table topic/*
    id               title 
    ---------------- ------
    2008051584315390 aa                                                                                                                              (所影响的行数为 1 行)
    */
      

  3.   

    drop table topic
    create table topic 

    id char(50) primary key default datename(yy,getdate())+datename(mm,getdate())+datename(dd,getdate())+datename(hh,getdate())+datename(mi,getdate())+datename(ss,getdate())+datename(ms,getdate()), 
    title char(128) 
    )insert into topic(title) values('asdas')
    select * from topic
    /*
    id                                                 title
    -------------------------------------------------- --------
    2008May1584443483                                  asdas     
    2008May1584444233                                  asdas     
    2008May1584444780                                  asdas     
    2008May1584445327                                  asdas     
    2008May1584445530                                  asdas     
    2008May1584445750                                  asdas     
    2008May158444593                                   asdas     
    2008May1584445967                                  asdas     
    2008May1584446187                                  asdas     
    2008May1584446390                                  asdas     
    2008May1584446590                                  asdas  
    */
      

  4.   

    谢谢这么多好兄弟回答.差不多解决了.
    但是还有个问题,就是为什么是2008而不是08呢?我是datename(yy,getdate())
    而不是datename(yyyy,getdate())啊?如果要得出08怎么弄呢?非常感谢哦.你们太有心了,回答都不是简单,而是有实例.我太感动了.
      

  5.   


    datename(yy,getdate()) 就是2008,因为查询出来的是年
      

  6.   

    如果要得出08怎么弄呢? SELECT RIGHT(DATEPART(yy,GETDATE()),2)