2015-06-24 4 views
-1

У меня есть база данных погоды в MySQL. Моя база данных получает данные от arduino, но иногда arduino имеет некоторую ошибку и отправляет значение ошибки в моей базе данных. Я хочу, чтобы хранимая процедура отклонила эту ошибку. Я хочу использовать, если в хранимой процедуре. Пример, если температура < 20, тогда MySQL отклонит эти данные. Является ли это возможным? Помогите мне пожалуйста с кодировкойИспользование хранимой процедуры в MySQL

это мой стол

CREATE TABLE `cuaca_maritim`.`weather_data` (
`idweather` INT(10) NOT NULL, 
`temperature` DECIMAL(4,2) NOT NULL, 
`HUMID` DECIMAL(4,2) NOT NULL, 
`AIRPRESSURE` DECIMAL(6,2) NOT NULL, 
`WIND` DECIMAL(4,2) NOT NULL, 
PRIMARY KEY (`idweather`)) 
    ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8 
COLLATE = utf8_bin; 

ответ

0

Может быть, вы просто хотите вид:

create view good_weather_data as 
    select wd.* 
    from weather_data 
    where temperature >= 20; 

Я не вижу, почему хранимая процедура будет необходимо. Вы можете использовать триггер, который отклоняет недопустимые значения данных при их загрузке.

+0

Нет, я не хочу вид, я хочу, чтобы моя база данных может отказаться от данных, так что данные не будут сохранены в MyDatabase. Можете ли вы мне помочь – Tia

+0

Тогда вам нужен триггер. Начните с документации: https://dev.mysql.com/doc/refman/5.7/ru/trigger-syntax.html. –

+0

Я пытаюсь использовать триггер раньше, но после того, как я его использую, arduino не может отправить данные в mysql – Tia

0

Я думаю, что вы можете использовать следующую хранимую процедуру для выполнения своей работы.

DELIMITER # 
CREATE OR REPLACE PROCEDURE add_weather_data (IN temp INT) 
proc_main: BEGIN 
IF (temp > 20) THEN 
    INSERT INTO weather_data(temperature) VALUES (temp); 
END IF; 
END proc_main # 
DELIMITER; 

Здесь я не рассматривать только темп вы можете сделать то же самое для других параметров также

+0

VALUES (temp), что это значит? – Tia

+0

вы вставляете значение параметра temp, которое берется в хранимой процедуре. –

+0

Хранимая процедура не работает, я пытаюсь ввести значение <20 в температуру, но моя база данных все еще сохраняет данные, она не отвергает данные. Зачем? – Tia

Смежные вопросы