SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.03.2009 15:02:10

Pradromalo
Участник
Зарегистрирован: 05.03.2009
Сообщений: 3

Хранимая продцедура и exeption в ней

Написал вот такую храниму продцедуру:


Код SQL

CREATE DEFINER=`root`@`localhost` PROCEDURE `prAddFullName`(IN inLastname varchar(20),
                                            IN inFirstname varchar(20),
                                            IN inSecondname varchar(20))
BEGIN
  INSERT INTO
    lastname(Lastname)
  VALUES
    (inLastname);
  INSERT INTO
    firstname(Name)
  VALUES
    (inFirstname);
  INSERT INTO
    secondname(Secondname)
  VALUES
    (inSecondname);

  INSERT INTO
    fullname(LastnameID,NameID,SecondnameID)
  SELECT
    lastname.id,firstname.id,secondname.id
  FROM
    lastname,firstname,secondname
  WHERE
    Lastname = inLastname
     AND Name = inFirstname
     AND Secondname = inSecondname;
END

Знаю что коряво! Подскажите как правильно?
И вот косяк вылазит- если поля Lastname, Name или Secondname сделать уникальными может вызваться ексепшн Duplicated - как быть в таком случае?? Есть ли какой-то аналог блоков try{}catch{}(перехвата ексепшенов) в SQL?

Неактивен

 

#2 05.03.2009 15:10:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранимая продцедура и exeption в ней

А зачем такая хитрая организация данных, если не секрет?

Дублей можно избежать, если использовать INSERT IGNORE вместо простого INSERT.

Неактивен

 

#3 05.03.2009 15:18:14

Pradromalo
Участник
Зарегистрирован: 05.03.2009
Сообщений: 3

Re: Хранимая продцедура и exeption в ней

Спасибо.

А в чём эта хитрость проявляется? В 3х таблицах текстовые данные с соотвтственными им id - в 4ой ссылки на определенные id к первым 3м.

Неактивен

 

#4 05.03.2009 15:48:29

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранимая продцедура и exeption в ней

«Зачем?» smile

Можно же хранить для каждого пользователя ФИО строками. Данных не сильно больше, вроде бы...

+ Ваш вариант неустойчив к «атакам на регистр»: если первый человек зарегистрировал имя «иван» с
маленькой буквы, то все остальные «Иван»ы будут писаться с маленькой буквы...

Неактивен

 

#5 05.03.2009 18:47:24

Pradromalo
Участник
Зарегистрирован: 05.03.2009
Сообщений: 3

Re: Хранимая продцедура и exeption в ней

Хмм. Спасибо.
Но это тестовый пример. Взял первое что в голову пришло. Хотел просто разобратся в работе в/с БД MySQL.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson