TIMESTAMP myDate
MYSQL テーブルにフィールドがあります。
でstringForTheDay
毎日一意の文字列を定義する方法はありますかmyDate
?
何かのようなもの:
UNIQUE(stringForTheDay, day_in_mydate)
つまり、次の 2 つの行は許可されません。
2012-11-29 13:35:53 samestring
2012-11-29 20:39:09 samestring
TIMESTAMP myDate
MYSQL テーブルにフィールドがあります。
でstringForTheDay
毎日一意の文字列を定義する方法はありますかmyDate
?
何かのようなもの:
UNIQUE(stringForTheDay, day_in_mydate)
つまり、次の 2 つの行は許可されません。
2012-11-29 13:35:53 samestring
2012-11-29 20:39:09 samestring
できません。
または、データ型が only の別の列を作成DATE
し、dateOnly 列と文字列列で一意の複合キーを作成することもできます。
例えば
CREATE TABLE Table1
(
`day_in_mydate` datetime,
`stringForTheDay` varchar(10),
`dateControl` date,
UNIQUE (dateControl, stringForTheDay)
)
ここでは完全な例を示しました。
レコードを含む既存のテーブルがある場合でも、それを変更できます。データ型の列を追加し、DATE
このクエリを実行します
ALTER TABLE tableName ADD CONSTRAINT tb_UQ UNIQUE (dateOnlyColumn, stringColumn)
タイムスタンプ フィールドの値でテーブルを更新します。
UPDATE tableName
SET dateOnlyColumn = DATE(timestampColumn)
最善の策は、日付部分を別の列にコピーし、一意の制約を追加することだと思います。トリガーを使用して、日付部分を最新の状態に保つことができます。
CREATE TRIGGER ins_tablename BEFORE INSERT ON tablename
FOR EACH ROW SET NEW.dateColumn = CAST(NEW.timestampColumn AS DATE);
CREATE TRIGGER upd_tablename BEFORE UPDATE ON tablename
FOR EACH ROW SET NEW.dateColumn = CAST(NEW.timestampColumn AS DATE);
( MySQL 5.6 リファレンス マニュアルの §18.3「トリガーの使用」を参照してください。)