Задавайте вопросы, мы ответим
Вы не зашли.
создала функцию, но она не проходит, не могу понять почему(((
причем отдельно запрос срабатывает!!
DELIMITER $$
DROP FUNCTION IF EXISTS `zadanie_2`.`function1` $$
CREATE FUNCTION `zadanie_2`.`function1` ()
RETURNS INT
BEGIN
SELECT count(*) from orders, users where name='r' and orders.id_user=users.id_user
END $$
DELIMITER ;
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT count(*) from orders, users where name='r' and orders.id_user=users.id_user' at line 4
Неактивен
1. перед END нужна точка с запятой
2. функция должна возвращать число, но не должна генерировать набор результатов
Неактивен
большое спасибо, помогло)
может быть вы мне и с процедурой подскажите???
DELIMITER $$
DROP PROCEDURE IF EXISTS `zadanie_2`.`procedure2` $$
CREATE PROCEDURE procedure2 (in oldFio tinytext)
BEGIN
DECLARE idOld int
SELECT id_user into idOld FROM users WHERE surname = oldFio;
DELETE FROM orders WHERE id_user = idOld;
UPDATE orders;
END $$
DELIMITER ;
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id_user into idOld FROM users WHERE surname = oldFio; DELETE FROM or' at line 4
Неактивен
Точка с запятой после строчки DECLARE.
Неактивен
поставила но опять что-то неправильно
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; END' at line 6
Неактивен
ура у меня получилась(просто убрала update)большое спасибо!!!
Неактивен
подскажите, как вообще создавать триггеры????(это как процедуры script - create)
Неактивен
Неактивен
это все понятно
так где писать?? в командной строке?
Неактивен
Там же, где создаете процедуру. DELIMITER $$ тоже пригодится
Неактивен
вообще мне нужно Написать триггер, который проверяет, чтобы фамилия, имя и отчество были написаны с прописной буквы.
это хоть похоже на правду???
CREATE TRIGGER bigLetter BEFORE INSERT ON users
FOR each row
BEGIN
SET new.surname = concat(upper(left(new.surname,1));
substring(new.surname,1));
SET new.patronymic = concat(upper(left(new.patronymic,1)),
substring(new.patronymic,1));
SET new.name = concat(upper(left(new.name,1)),
substring(new.name,1));
END;
но пишет ошибки
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'substring(new.surname,1))' at line 1
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'substring(new.surname,1))' at line 1
и там еще 3 шт
Неактивен
добавила DELIMITER $$
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'substring(new.surname,1));
SET new.patronymic = concat(upper(left(new.patron' at line 4
Неактивен
Что у вас делает строчка
substring(new.surname,1));
Это ведь не запрос и не часть выражения. Таких строчек две.
Неактивен
так что получается все строчки с substring не нужны?
Неактивен
DELIMITER $$
CREATE TRIGGER bigLetter BEFORE INSERT ON users
FOR each row
BEGIN
SET new.surname = concat(upper(left(new.surname,1)));
SET new.patronymic = concat(upper(left(new.patronymic,1)));
SET new.name = concat(upper(left(new.name,1)));
END;
может быть так правильно???подскажите пожалуйста, ошибок нет
а как проверить работает триггер или нет(что то типа call есть для триггера???)
Неактивен
Мне кажется форум не идет вам в помощь, ответы на форуме избавляют от необходимости думать и анализировать. Или вы хотите что-то быстрее закончить и избавиться навсегда от этого.
Попробуйте вставить запись в таблицу, триггер выполнится и увидите что записалось в таблицу. Например, substring(new.surname,1)) у вас была не лишняя, но она должна быть вторым аргументом CONCAT, а не отдельной строкой.
Неактивен
да я очень хочу побыстрее от этого задания избавиться!!!)
и что вы имеете ввиду под"вставить запись в таблицу"???
напишите как правильно, если не сложно!)
Неактивен
и кстати до этого substring(new.surname,1)) был как раз вторым аргументом он писался в общей скобке
Неактивен
Верно, в общей скобке, но там стояла точка с запятой, а должна быть запятая.
Неактивен
извиняюсь)) скопировала, а не глянула что!
все сделала, в табл вставляет, но почему-то только первую буква сначала большую потом маленькую((
получилось
Pp Ii Ss
Неактивен
DELIMITER $$
CREATE TRIGGER big BEFORE INSERT ON users
FOR each row
BEGIN
SET new.surname = concat(upper(left(new.surname,1)), substring(new.surname,1));
SET new.patronymic = concat(upper(left(new.patronymic,1)), substring(new.patronymic,1));
SET new.name = concat(upper(left(new.name,1)), substring(new.name,1));
END;
сейчас триггер в таком виде
Неактивен
Замените единичку на двоечку в последней функции (так в каждой строке):
Неактивен
не помогло(
Неактивен
И какой сейчас ответ получается после вставки?
Неактивен
такой же
Pp Ii Ss
Неактивен