Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
7 / 6 / 2
Регистрация: 10.06.2013
Сообщений: 387
1

Как одной строкой запроса добавить один и тот же сгенерированный UUID в поле Key таблицы1 и в поле Foreign Key таблицы2 ?

10.06.2013, 17:30. Просмотров 1975. Ответов 4
Метки нет (Все метки)

У меня получается добавить одним запросом один и тот же UUID в две таблицы.
Как одной строкой запроса добавить один и тот же сгенерированный UUID в поле Key таблицы1 и в поле Foreign Key таблицы2 ?


T-SQL
1
2
3
4
5
6
7
INSERT INTO `t1` (`uid1`, `c2`, `c3`, `c4`, `c5`) 
VALUES (
UUID(), 
'v2', 
'v3', 
'v4', 
'v5')
Вторая таблица имеет вид
`t2` (`uid2`, `c2`, `c3`, `c4`, `uid1 foreign key`)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2013, 17:30
Ответы с готовыми решениями:

Создание выпадающего списка в поле таблицы2 из значений соответствующего поля таблицы1
Здравствуйте. Вынужден начать использовать БД.. работал раньше поверхностно... Сейчас придется...

Как добавить данные в таблицу БД из другой таблицы с FOREIGN KEY
Вот таблицы, чтобы было понятно что нужно: (PROGRAM) id|kod_lesson_teacher 1 | 1 2 | ...

Зачем нужны primary key и foreign key?
Пожалуйста, объясните самым простым языком зачем эти ключи нужны? Какова их функция? Как они...

PL/SQL, добавить данные в foreign key
Всем доброго времени суток. Скажите пожалуйста. Как можно добавить данные в таблицу oracle в...

4
13186 / 6573 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
10.06.2013, 17:46 2
Прямо одним - хранимые процедуры или триггеры.

Или, если-таки, не совсем одним, то можно сунуть его в переменную для повторного использования:
MySQL
1
2
3
4
5
INSERT INTO `t1` (`uid1`, `c2`,...)
VALUES (@uid := UUID(), 'v2', ...);
 
INSERT INTO `t2` (`uid2`, ...)
VALUES (@uid, ...);
2
7 / 6 / 2
Регистрация: 10.06.2013
Сообщений: 387
11.06.2013, 10:01  [ТС] 3
То есть можно в одну строку через ";"?
0
13186 / 6573 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
11.06.2013, 15:28 4
Без лишних телодвижений - нет, нельзя. Это два отдельных запроса.
0
7 / 6 / 2
Регистрация: 10.06.2013
Сообщений: 387
14.06.2013, 17:11  [ТС] 5
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSERT INTO `b` 
(`uid`, `name`, `id`, `country`, `city`)
VALUES 
(UUID(), `NewHotel`,@uid := UUID(),`45`,`Male`);
 
INSERT INTO `m` 
(`uid`,
`address`,
`telephone`,
`fax`,
`email`,
`web`) 
VALUES 
(@uid, `New st. 1`,`+96`,`+97`,`aaa.ml`,`aa.ml`);
Пытаюсь создать хранимую процедуру средствами phpMyAdmin. Вылетает ошибка:

При обработке вашего запроса были обнаружены ошибки:
Данный запрос не был выполнен: "CREATE PROCEDURE `p_add`(IN `uid` INT(11) UNSIGNED, IN `name` VARCHAR(255) CHARSET cp1251, IN `id` INT(11) UNSIGNED, IN `country` TINYINT(4) UNSIGNED, IN `city` VARCHAR(255) CHARSET cp1251, IN `address` VARCHAR(255) CHARSET cp1251, IN `telephone` VARCHAR(255) CHARSET cp1251, IN `fax` VARCHAR(255) CHARSET cp1251, IN `email` VARCHAR(255) CHARSET cp1251, IN `web` VARCHAR(255) CHARSET cp1251) NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER INSERT INTO `b` (`uid`, `name`, `id`, `country`, `city`) VALUES (UUID(), `NewHotel`,@uid := UUID(),`45`,`Male`); INSERT INTO `m` (`uid`, `address`, `telephone`, `fax`, `email`, `web`) VALUES (@uid, `New st. 1`,`+96`,`+97`,`aaa.ml`,`aa.ml`);"

Ответ MySQL: #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 'INSERT INTO `m` (`uid`, `address`, `telephone`, `fax`, `email`, `web`' at line 6
Ругается на переменную @uid. Как ее правильно указать?

Добавлено через 39 минут
Нашел одну ошибку - лишнюю ";", но ошибка осталась. А вот когда я использовал MySQL Workbench, то сработало.
Сейчас другая проблема. Оба вызова UUID() вернули один и тот же номер. Причем из одного символа. Как сделать, чтобы при каждом вызове UUID() генерировался новый номер?

Добавлено через 1 час 17 минут
В MySQL Query Browser создал процедуру
T-SQL
1
2
3
4
5
6
CREATE DEFINER=`dba1`@`localhost` PROCEDURE `p_add3`()
BEGIN
 INSERT INTO `bk_hotels` (`uid`, `name`, `id`, `country`, `city`) VALUES (UUID(), 'NewHotel',@uid := UUID(),'45','Male');
 INSERT INTO `media` (`uid`,`address`,`telephone`,`fax`,`email`,`web`) VALUES (@uid, 'New st. 1','+96','+97','aaa.ml','aa.ml');
 SELECT ('Done');
END
Странно, что иногда выбрасывает:
Данный запрос не был выполнен: "CALL `p_add3`(); "

Ответ MySQL: #1062 - Duplicate entry '0' for key 'PRIMARY'
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2013, 17:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Добавить данные в таблицу с Foreign Key
Проблема в следующем, не могу понять, как добавлять данные в таблицу в которой есть Foreign key. В...

Как заполнить Foreign Key?
Есть две таблицы один ко многим t1(idt1,поле1) t2(idt2,поле1,поле2...fk_idt1),idt1 и...

Как отключить проверку FOREIGN KEY
Добрый день. Как с помощью IGNORE_CONSTRAINTS отключить проверку FOREIGN KEY? SET IDENTITY_INSERT...

Как заполнить колонку listview по foreign key?
Интересует способ выводить название отдела (departments.name) по foreign key (DepartmentsId)...

Как создать foreign key через phpMyadmin
Всем доброго времени суток , такой вопрос создаю БД с таблицами (формат InnoDB) через phpmyadmin c...

Как задать кастомное называние для foreign key поля?
Есть две таблицы class Request { public int RequestId { get; set; } public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.