同じ会計年度のデータ変更を制限するためのトリガー制限を作成する際、2つの日付(NEW.starting_date & OLD.starting_date)が同じ会計年度にあるかどうか、つまり自分の条件セクションにないかどうかを確認する必要がありました。SQL条件で2つの日付が同じ会計年度にあることを確認しますか?
私のテーブルはこのようになります。
pid (int) | data (varchar) | starting_date (date)
1 | abc | 2017-09-08
2 | def | 2017-03-13
3 | ghi | 2017-07-12
条件
NEW.data<>OLD.data
AND (
(YEAR(NEW.starting_date) = YEAR(OLD.starting_date)
AND MONTH(NEW.starting_date)<=4 AND MONTH(OLD.starting_date) <=4
AND MONTH(NEW.starting_date)>=3 AND MONTH(OLD.starting_date) >=3)
OR
(ABS(YEAR(NEW.starting_date)-YEAR(OLD.starting_date)) = 1
AND MONTH(NEW.starting_date)<=3 AND MONTH(OLD.starting_date) >=4
AND MONTH(NEW.starting_date)>=4 AND MONTH(OLD.starting_date) <=3)
)
)
注:会計年度は、毎年4月1日に開始します。
QUESTION:予想通り
- この状態は動作しません。何が問題なの?
- これを実行する他の効率的な方法はありますか?
データベースサーバー
Server: 127.0.0.1 via TCP/IP
Server type: MariaDB
Server version: 10.1.25-MariaDB - mariadb.org binary distribution
Protocol version: 10
User: [email protected]
Server charset: UTF-8 Unicode (utf8)
Webサーバー
Apache/2.4.26 (Win32) OpenSSL/1.0.2l PHP/5.6.31
Database client version: libmysql - mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
もう少し情報が必要です。利用されている特定のRDBMSを含めてください(MySQLには、タグが与えられているものとしますが、テキストで確認してください)、関係するテーブルのスキーマ、および期待どおりに動作しないものを示す完全な例を含めてください。 [構造化問合せ言語(SQL)の問合せのヒント](https://meta.stackoverflow.com/questions/271055/tips-for-asking-a-good-structured-query-language-sql-question)を読むことを検討してください。/271056)。 – hunteke
@hunteke infoは –
が追加されました。しかし、我々はまだ他の詳細が必要です:1)関連するテーブルのスキーマ、2)あなたが試みた特定のコード3)あなたが意図したとおりに動作していないものを正確に示す出力。 – hunteke