2016-04-23 2 views
0

Ich habe die folgende Tabelle in SQL: Die Quittungsnr Spalte wird basierend auf PB + Jahr-Monat-Datum mit 9 Nullen plus Wert der ersten Spalte berechnet.berechnete Spalte basierend auf ID für den Empfang keine Generation

Bitte helfen Sie mir die folgende Abfrage für MYSQL zu übersetzen.

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) 
) 

Antwort

0

können Sie eine Ansicht verwenden:

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; 

Anmerkung: Ich glaube nicht, das wirklich tut, was Sie wollen. Die berechnete Spalte in SQL Server setzt das aktuelle Datum in dem Beleg. Also, der Wert ändert sich von einem Tag zum nächsten. Die Ansicht macht genau das Gleiche.

Wenn Sie tatsächlich das Datum wollen die ID eingeführt wurde, haben Sie zwei Möglichkeiten:

  1. Haben Sie eine Spalte mit dem Einführungsdatum in der Tabelle und verwendet, die anstelle der aktuellen Datum/Uhrzeit.
  2. Verwenden Sie einen Trigger, um den Beleg zu erstellen.
Verwandte Themen