如何在 google 云 sql 实例数据库中创建触发器
How to create a Trigger in a google cloud sql instance Database
我在数据库中创建触发器时遇到问题。
我的 google 云 sql.
中有一个带有数据库(名称:test)的 MySQL 第二代实例
现在我的数据库中有多个表,我正在尝试使用以下方法在其中一个表中创建触发器:
CREATE TRIGGER date_overlap_insert_start_date
BEFORE INSERT ON driver_operation
FOR EACH ROW
BEGIN
if exists(
select 1
from driver_operation
where nif = NEW.nif
and (NEW.start_date > start_Date and NEW.start_date < end_Date)) then
signal sqlstate '45000' SET MESSAGE_TEXT = 'Overlaps with existing data';
end if;
END;
我得到的错误是这样的:
错误代码:1064。您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 10 行
附近使用的正确语法
有没有人可以帮助我解决这个问题?此触发器是为了防止日期字段重叠。
我今天遇到了完全相同的问题。这仅仅是因为云 sql 实例将每个分号视为语句的结尾,所以我只能假设它每次遇到分号时都会尝试执行。
尝试使用以下方法创建触发器:
/*!50003 CREATE*/ /*!50003 TRIGGER date_overlap_insert_start_date
BEFORE INSERT ON driver_operation
FOR EACH ROW
BEGIN
if exists(
select 1
from driver_operation
where nif = NEW.nif
and (NEW.start_date > start_Date and NEW.start_date < end_Date))
then
signal sqlstate '45000' SET MESSAGE_TEXT = 'Overlaps with
existing data';
end if;
END */
编辑以修复我的语法。缺少一个分号。
关于Google Cloud Platform,一件重要的事情是转到您的实例配置,即"Edit Configuration"然后转到"Flags"并确保"log_bin_trust_function_creators" 设置为开。这将解决 GCP 中创建触发器的问题,并允许您在 MySQL Workbench CE 8.0 中创建触发器而不会崩溃。
我在数据库中创建触发器时遇到问题。 我的 google 云 sql.
中有一个带有数据库(名称:test)的 MySQL 第二代实例现在我的数据库中有多个表,我正在尝试使用以下方法在其中一个表中创建触发器:
CREATE TRIGGER date_overlap_insert_start_date
BEFORE INSERT ON driver_operation
FOR EACH ROW
BEGIN
if exists(
select 1
from driver_operation
where nif = NEW.nif
and (NEW.start_date > start_Date and NEW.start_date < end_Date)) then
signal sqlstate '45000' SET MESSAGE_TEXT = 'Overlaps with existing data';
end if;
END;
我得到的错误是这样的: 错误代码:1064。您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 10 行
附近使用的正确语法有没有人可以帮助我解决这个问题?此触发器是为了防止日期字段重叠。
我今天遇到了完全相同的问题。这仅仅是因为云 sql 实例将每个分号视为语句的结尾,所以我只能假设它每次遇到分号时都会尝试执行。
尝试使用以下方法创建触发器:
/*!50003 CREATE*/ /*!50003 TRIGGER date_overlap_insert_start_date
BEFORE INSERT ON driver_operation
FOR EACH ROW
BEGIN
if exists(
select 1
from driver_operation
where nif = NEW.nif
and (NEW.start_date > start_Date and NEW.start_date < end_Date))
then
signal sqlstate '45000' SET MESSAGE_TEXT = 'Overlaps with
existing data';
end if;
END */
编辑以修复我的语法。缺少一个分号。
关于Google Cloud Platform,一件重要的事情是转到您的实例配置,即"Edit Configuration"然后转到"Flags"并确保"log_bin_trust_function_creators" 设置为开。这将解决 GCP 中创建触发器的问题,并允许您在 MySQL Workbench CE 8.0 中创建触发器而不会崩溃。