1

TIMESTAMP myDateMYSQL テーブルにフィールドがあります。

stringForTheDay毎日一意の文字列を定義する方法はありますmyDate?

何かのようなもの:

UNIQUE(stringForTheDay, day_in_mydate)

つまり、次の 2 つの行は許可されません。

2012-11-29 13:35:53      samestring
2012-11-29 20:39:09      samestring
4

2 に答える 2

1

できません。

または、データ型が 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)
于 2012-12-25T04:59:14.357 に答える
1

最善の策は、日付部分を別の列にコピーし、一意の制約を追加することだと思います。トリガーを使用して、日付部分を最新の状態に保つことができます。

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「トリガーの使用」を参照してください。)

于 2012-12-25T05:04:52.220 に答える