SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 03.06.2008 07:04:56

Infexia
Участник
Зарегистрирован: 03.06.2008
Сообщений: 5

проблема создания таблицы в уже существующей базе

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

Неактивен

 

#2 03.06.2008 07:44:09

EugeneTM
Гуру
Зарегистрирован: 11.04.2008
Сообщений: 89

Re: проблема создания таблицы в уже существующей базе

Сначала необходимо создать эту таблицу.
Затем для таблиц из которых будут сливаться данные создать тригеры.

http://dev.mysql.com/doc/refman/5.1/en/triggers.html

Неактивен

 

#3 03.06.2008 07:47:07

Infexia
Участник
Зарегистрирован: 03.06.2008
Сообщений: 5

Re: проблема создания таблицы в уже существующей базе

а через внешние ключи это будет не то?
я хотела чтоб в нее собирались данные, три поля, два из одной таблицы одно из другой

Неактивен

 

#4 03.06.2008 08:01:21

Infexia
Участник
Зарегистрирован: 03.06.2008
Сообщений: 5

Re: проблема создания таблицы в уже существующей базе

написала триггер
аля
CREATE TRIGGER sdata_insert AFTER INSERT ON fortimur
FOR EACH ROW
BEGIN
INSERT INTO fortimur SET
fortimur.title = contract.id;
END

пишет ошибку
1227 не хватает прав, хочет супер права, хотя для всего остального (создания, удаления. правки таблиц) прав хватает

Неактивен

 

#5 03.06.2008 08:12:00

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: проблема создания таблицы в уже существующей базе

а через внешние ключи это будет не то?
я хотела чтоб в нее собирались данные, три поля, два из одной таблицы одно из другой

Внешний ключ не приводит к дублированию данных в таблицах - в любом случае в каждую из таблиц придется вставлять отдельно - сначала в родительскую, потом в дочернюю (не наоборот!!).
Про внешние ключи см. также
http://webew.ru/posts/219.webew

Да, триггером можно.

Права нужны суперюзера, да (обычно это только root).
Если Вам не сделают GRANT SUPER ON *.* TO username, то триггер Вы создать не сможете sad - придется через процедуру или отдельными запросами.

Триггер лучше называть имя_таблица_две_буквы, где две буквы обозначают действие - например, fortimur_ai - AFTER INSERT, _bd - BEFORE DELETE и т.п.
Такое считается достаточно удобным, т.к. по названию триггера можно понять сразу, на какой он висит таблице и когда активируется.

Триггер вообще у Вас должен по-другому выглядеть:


CREATE TRIGGER fortimur_ai AFTER INSERT ON fortimur
FOR EACH ROW
BEGIN
-- нельзя писать просто = contract.id - нужно как-то сопоставить ряды
SET NEW.title = (SELECT id FROM contract.id WHERE тут условие, которое выберет четко одну строку);
END;
 

Неактивен

 

#6 03.06.2008 08:32:56

Infexia
Участник
Зарегистрирован: 03.06.2008
Сообщений: 5

Re: проблема создания таблицы в уже существующей базе

а где конкретно писать  GRANT SUPER ON *.* TO username
а то я сейчас прыгаю около админа, а он мне говорит скажи куда, я пропишу

Неактивен

 

#7 05.06.2008 13:48:47

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: проблема создания таблицы в уже существующей базе

Из любого клиента. Например, из консоли mysql.
Только нужно соединиться с сервером с правами администратора.

У вашего администратора ОС какая?

Неактивен

 

#8 11.07.2008 13:22:23

Infexia
Участник
Зарегистрирован: 03.06.2008
Сообщений: 5

Re: проблема создания таблицы в уже существующей базе

винда у него XP

Неактивен

 

#9 14.07.2008 20:11:32

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

Re: проблема создания таблицы в уже существующей базе

Если Вам просто нужна сборка данных из нескольких таблиц, советую подумать о
представлении (VIEW) - это не сложнее, чем написать запрос на выборку этих данных.

Внешние ключи ограничивают возможности вставки-удаления, но они никаким образом
не копируют сами данные.

Триггеры в данном случае, мне кажется, некоторый overkill.

Неактивен

 

Board footer

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