基于ID的计算列,用于接收不生成

时间:2016-04-23 16:04:57

标签: mysql

我在SQL中有以下表:收据否列是根据PB +年 - 月 - 日计算的,其中9个零加上第一列的值。

请帮我翻译下面的MYSQL查询。

Create table PBTran
    (
        PBTranID int primary key auto_increment,
        ReceiptNo VARCHAR(30) AS 'PB' + cast(datepart(yy,getdate()) as varchar(25)) + cast(datepart(mm,getdate()) as varchar(25)) + RIGHT('000000000' + CAST(PBTranID AS VARCHAR(10)), 9)
) 

1 个答案:

答案 0 :(得分:0)

您可以使用视图:

Create table t_PBTran (
    PBTranID int primary key auto_increment
);

Create view v_PBTran as
    select PBTranId,
           concat(date_format(now(), '%Y%m%d), lpad(PBTranId, 8, ' '))
    from t_PBTran;

注意:我不认为这真的能满足你的需求。 SQL Server中的计算列将当前日期放在收据中。因此,价值会从一天变为另一天。视图完全相同。

如果您确实想要插入ID的日期,您有两个选择:

  1. 在表格中添加一个包含插入日期的列,并使用该列代替当前日期/时间。
  2. 使用触发器创建收据。