我试图在列中不存在值的情况下执行SQL命令,
此脚本实际上试图实现的是在t_bridge表中插入一组新值。
我看到了this answer,但出现此错误-如果在此位置无效。
在这里我似乎走错了方向,而我却缺少了一些至关重要的东西。
IF EXISTS (SELECT * FROM t_bridge WHERE serial_number = 1234)
BEGIN
-- don't do anyting
END
ELSE
BEGIN
insert into t_bridge
values (
ID
,app_id
,1
,'SAN-2-H-5G-EU V4'
,470 /
,29569
,35
,HARDWARE_VERSION
,SOFTWARE_VERSION
,'MEN4'
,DESCRIPTION
,DETAILS
,1234
,STATUS
,INSTALL_DATE
,LAST_CONNECTED_DATE
,STATUS_CHANGED_DATE
,ERASED
,999
,LOCATION_ID
,unix_timestamp(now())*1000
,unix_timestamp(now())*1000
,NULL
,NULL
,SITE_ID
,CONNECTION_TYPE
,NETWORK_NAME
,2
,ICCID
,DATA_PLAN_VALID_DATE
,1
,NULL
,'automatically'
);
insert into t_chap_token (BRIDGE_ID,BRIDGE_SERIAL_NUMBER,TOKEN)
VALUES (
(select id from t_bridge where SERIAL_NUMBER = 1234)
,'1234'
,'XXXXXXXXXXX='
END
答案 0 :(得分:0)
您可以使用t_bridge WHERE serial_number = 1234中的SELECT COUNT(ID)作为值存在。而且相当空的if子句,您可以使用NOT EXISTS然后插入值。我发现了这个MySQL Workbench reports "is not valid at this position for this server version" error
答案 1 :(得分:0)
因此,由于我不太熟悉SQL脚本, 事实证明,我需要在过程中创建和运行它。
这是这样做的方法:
DROP procedure IF EXISTS `PROCEDURE_NAME`;
DELIMITER $$
USE `DB_NAME`$$
CREATE PROCEDURE `PROCEDURE_NAME`()
BEGIN
IF EXISTS (SELECT * FROM t_bridge WHERE serial_number = 1234)
BEGIN
-- don't do anyting
END
ELSE
BEGIN
insert into t_bridge
values (
ID
,app_id
,1
,'SAN-2-H-5G-EU V4'
,470 /
,29569
,35
,HARDWARE_VERSION
,SOFTWARE_VERSION
,'MEN4'
,DESCRIPTION
,DETAILS
,1234
,STATUS
,INSTALL_DATE
,LAST_CONNECTED_DATE
,STATUS_CHANGED_DATE
,ERASED
,999
,LOCATION_ID
,unix_timestamp(now())*1000
,unix_timestamp(now())*1000
,NULL
,NULL
,SITE_ID
,CONNECTION_TYPE
,NETWORK_NAME
,2
,ICCID
,DATA_PLAN_VALID_DATE
,1
,NULL
,'automatically'
);
insert into t_chap_token (BRIDGE_ID,BRIDGE_SERIAL_NUMBER,TOKEN)
VALUES (
(select id from t_bridge where SERIAL_NUMBER = 1234)
,'1234'
,'XXXXXXXXXXX='
END