私はpostgresトリガーをmysqlトリガーに転置しようとしています。postgresqlトリガーをmysqlトリガーに変換する
DELIMITER //
CREATE TRIGGER trig_b_i_compute_date
BEFORE INSERT ON campaigns
FOR EACH ROW
BEGIN
DECLARE date_min DATE;
DECLARE date_max DATE;
DECLARE temp_year INTEGER;
SET temp_year = SELECT CONVERT(SUBSTRING(NEW.dc_date_label,1,5), UNSIGNED INTEGER) ;
SET date_min = SELECT CONVERT(CONCAT(temp_year,'-01-10'), DATE);
SET date_max = SELECT CONVERT(CONCAT(temp_year + 1, '09-30'), DATE);
SET NEW.dc_date_start = date_min;
SET NEW.dc_date_end = date_max;
END;
//
DELIMITER ;
私はエラーを取得するしかし:
MySQL server version for the right syntax to use near 'SELECT CONVERT(SUBSTRING(NEW.dc_date_label,1,5), UNSIGNED INTEGER) ;
何それは自動的に日付に従って行にフィールドを追加するには、これは私がmysqlの上で何をやったかである
CREATE FUNCTION convert_date()
RETURNS trigger
AS $$
declare
date_min DATE;
date_max DATE;
temp_year INTEGER;
begin
SELECT SUBSTRING(NEW."dc_date_label",0,5)::integer
INTO temp_year;
SELECT date(temp_year || '-01-10')
INTO date_min;
SELECT date(temp_year +1 || '-09-30')
INTO date_max;
NEW."dc_date_start" = date_min;
NEW."dc_date_end" = date_max;
RETURN new;
end;
CREATE TRIGGER trig_b_i_compute_date()
BEFORE INSERT
ON campaigns
FOR EACH ROW
EXECUTE PROCEDURE convert_date();
を追加しましたプロシージャに間違っていますか?
@s ..を削除してください。 –
まだ同じエラーがあります – TLR
dc_date_labelのデータタイプは?そして、価値観はどのように見えますか? –