mysqlテーブルのIDをデフォルト値の「000001」または「TodaysDateの後に000001」に設定したいのですが、同じようにauto_incrementedする必要があります。どうすればこれを行うことができますか?
また、「2012-04-01」などの「CURRENT_TIMESTAMP」を使用せずにTIMESTAMP列にデフォルト値を設定する方法、および更新トリガーが起動すると、今日の日付で更新される必要があります。
これを行う方法?
mysqlテーブルのIDをデフォルト値の「000001」または「TodaysDateの後に000001」に設定したいのですが、同じようにauto_incrementedする必要があります。どうすればこれを行うことができますか?
また、「2012-04-01」などの「CURRENT_TIMESTAMP」を使用せずにTIMESTAMP列にデフォルト値を設定する方法、および更新トリガーが起動すると、今日の日付で更新される必要があります。
これを行う方法?
自分の質問に答えたようです。具体的には、値を設定する「挿入/更新前」トリガーが必要です。
CREATE TRIGGER my_autoinc BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test1 SET NEW.id_column = concat(today()、<some value>);
終わり;
私があなただった場合は、id int、自動インクリメントのように残し、選択を行うときにlpad関数を使用します。
mysql> select lpad('1',6,'0');
+-----------------+
| lpad('1',6,'0') |
+-----------------+
| 000001 |
+-----------------+
1 row in set (0.00 sec)
タイムスタンプについては、他の誰かに答えさせます。私が考えているのは同じことなので、current_timestampを使用し、mysql関数を使用して次のように変換します。
mysql> select left(now(),10);
+----------------+
| left(now(),10) |
+----------------+
| 2012-06-01 |
+----------------+
1 row in set (0.00 sec)'
編集:
mysql> select concat(replace(left(now(),10),'-',''),lpad('1',6,'0'));
+--------------------------------------------------------+
| concat(replace(left(now(),10),'-',''),lpad('1',6,'0')) |
+--------------------------------------------------------+
| 20120601000001 |
+--------------------------------------------------------+
1 row in set (0.00 sec)