2011-07-08 9 views
1

私はMySQL 5.1サーバーコミュニティエディションデータベースを持っています。テーブルには、TransactionDateという名前の列があります。DateTimeデータ型です。新しい挿入が行われるたびに、この列の値は現在の日付と時刻の値で更新されます。DateTimeデータ型の問題

このテーブルを作成したとき、すべての挿入に一意の秒の値が必要です。奇妙なシナリオでは、MySQLは同じ日付/時刻値を格納しています。これにより、クラッシュするレポートが少なくなります。ユーザーがフォームに記入する必要があり、数分かかりますので、これは奇妙です。ユーザーが新しいレコードを保存すると、現在の日付/時刻値がTransactionDate列に格納されます。少なくとも秒が変わるので重複する値は問題になりません。

この問題を解決する方法をご提案ください。

+0

重複した日付/時刻にエントリーを行い、複製、他のデータを持っていますか?その場合、フォームが2回送信されるなど、2回の送信が可能です(たとえば、1回のクリックではなくダブルクリック)。 – borrible

+0

問題はおそらくアプリケーションロジックにあります。おそらく、あなたは拡張挿入(a.k.a複数行の挿入)を使用しているか、またはテーブル結合を使用して一度に複数の行を更新しているでしょう。 また、TIMESTAMPデータ型を見て、どのようにしてデフォルトの行挿入時間に使用できるかを調べてください。 – Mchl

+0

@borrible:いいえ、その列だけです。 – RKh

答えて

2

固有の日付/時刻が必要な場合は、トリガーを使用して、行が作成されるときに自動的にnow()を入力します。

ボーナス...ここで働いてトリガ定義です:

DELIMITER $$ 
CREATE TRIGGER MYTABLE_INSERT_TRIGGER 
BEFORE INSERT ON MYTABLE 
FOR EACH ROW 
BEGIN 
    SET NEW.TransactionDate = now(); 
END;$$ 
DELIMITER ; 
+0

ボーナスをありがとう。笑。 – RKh

+0

TIMESTAMPの方がどうですか? – Mchl