1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'getdate()
UpdateDate datetime default getdate(),
CreateMan TEmpl nul' at line 24create table prompt_peroid_dm(
YearNo char(4) not null, /*年份YYYY*/
DMId varchar(4) not null, /*DM号*/
DMName varchar(30) not null, /*DM促销主题*/
DMBeginDate smalldatetime not null, /*促销开始日*/
DMEndDate smalldatetime not null, /*促销结束日*/
PurBeginDate smalldatetime not null, /*采购开始日*/
PurEndDate smalldatetime not null, /*采购结束日*/
DMPredays integer not null, /*分店提前几天看到DM促销主题*/
ProPredays integer not null, /*分店提前几天看到DM促销商品信息*/
PricePredays integer not null, /*分店提前几天看到DM促销商品的价格*/
MPricePredays integer not null, /*分店提前几天看到DM印花商品的价格*/
CreateDate datetime default getdate(),
UpdateDate datetime default getdate(),
CreateMan TEmpl null, /*创建操作员*/
UpdateMan TEmpl null,
/*修改操作员*/
Status char(1) null,
Re varchar(50) null,
Constraint p_prompt_peroid_dm primary key(yearno,dmid)
);

解决方案 »

  1.   

    TEMP1什么类型?
    CREATE TABLE prompt_peroid_dm(
     YearNo CHAR(4) NOT NULL, 
      DMId VARCHAR(4) NOT NULL, 
     DMName VARCHAR(30) NOT NULL, 
     DMBeginDate DATETIME NOT NULL, 
     DMEndDate DATETIME NOT NULL, 
      PurBeginDate DATETIME NOT NULL, 
     PurEndDate DATETIME NOT NULL, 
      DMPredays INTEGER NOT NULL, 
      ProPredays INTEGER NOT NULL, 
     /*分店提前几天看到DM促销商品信息*/
     PricePredays INTEGER NOT NULL, 
     /*分店提前几天看到DM促销商品的价格*/
     MPricePredays INTEGER NOT NULL, 
     /*分店提前几天看到DM印花商品的价格*/
    CreateDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
     UpdateDate TIMESTAMP ,
     CreateMan CHAR(10) NULL, 
     UpdateMan CHAR(10) NULL,  /*修改操作员*/
     STATUS CHAR(1) NULL,
     Re VARCHAR(50) NULL,
     CONSTRAINT p_prompt_peroid_dm PRIMARY KEY(yearno,dmid)
    );
      

  2.   

    TEmpl应该是自定义的,我改成varchar是这个提示
      

  3.   

    1楼代码可以了,MYSQL不支持自定义类型
      

  4.   


    谢谢。可以了,
    但是我有点不理解:
    CreateDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
     UpdateDate TIMESTAMP ,
    这里为什么要用TIMESTAMP 和CURRENT_TIMESTAMP  而不能用datetime和current_date()或curdate()
    还有updatedate 这里为什么不能用DEFAULT  CURRENT_TIMESTAMP 
      

  5.   

    MYSQL要求,只能有1个字段DEFAULT CURRENT_TIMESTAMP,只能用TIMESTAMP 类型,才能有CURRENT_TIMESTAMP
    默认值
      

  6.   

    那为什么不能用
    datetime和current_date()或curdate()
    ,你可以帮我解说下吗,谢谢
      

  7.   

    MYSQL要求就是这样,没有为什么
      

  8.   

    MYSQL中只能一个TIMESTAMP设置默认。如果一定要两个以上,则需要通过触发器中来实现。
      

  9.   

    触发器中判断一下 INSERT时的 这个 new.UpdateDate 是否为 NULL, 如果是NULL则 set  new.UpdateDate = current_timestamp;