SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 11.06.2017 02:35:14

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Копирование таблицы 'A' со всеми данными в таблицу 'B'

Всем доброго времени суток.
Помогите с запросом, нужно копировать таблицу 'A' со всеми данными в таблицу 'B' но
если при повторном вызове в таблице 'A' удалилась строка данных то она должна соответственно удалиться и из 'B'
другими словами нужен запрос который при повторном вызове в таблицу 'B' получает точную копию таблицы 'A'
ну или скомпоновать как-то эти два запроса в один


TRUNCATE `B`;   очистка таблицы 'B'
INSERT INTO B SELECT * FROM A;
 

Неактивен

 

#2 11.06.2017 02:48:53

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

т.е. вам нужно две одинаковые таблицы с разными именами?
1. триггеры на 'A' для дублирования изменений в 'B'
2. сделайте 'B' представлением

Неактивен

 

#3 11.06.2017 03:16:24

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

т.е. вам нужно две одинаковые таблицы с разными именами?
1. триггеры на 'A' для дублирования изменений в 'B'
2. сделайте 'B' представлением

1. не умею работать с триггерами в phpMyAdmin  sad  (если возможно то подскажите как)
2.тоже смотрел в эту сторону но тут загвоздка, делаю сайт CAKE PHP а он из консоли не видит вьюшек (представлений) только живые таблицы sad

Код
Welcome to CakePHP v2.9.9 Console
---------------------------------------------------------------
App : app
Path: /home/koe/public_html/app/
---------------------------------------------------------------
Bake All
---------------------------------------------------------------
Possible Models based on your current database:
1. Category
2. Objectsw    <---(сводная таблица) ее вьюшку создал, назвал (так как мне нужно) objects но в списке ее нет
3. SprArendaw
4. SprCityw
5. SprOrientirw
6. SprRajonw
7. SprSanUzelw
8. SprSotrudnikw
9. SprSrokw
10. SprStreetw
11. SprTypeObjectw   <---ее вьюшку создал, назвал type_objects в списке тож не наблюдаю
12. SprTypePomeshw
13. TypeOp
Enter a number from the list above,
type in the name of another model, or 'q' to exit

Отредактированно abu2002 (11.06.2017 03:19:18)

Неактивен

 

#4 11.06.2017 03:22:44

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

т.е. вам нужно две одинаковые таблицы с разными именами?
1. триггеры на 'A' для дублирования изменений в 'B'
2. сделайте 'B' представлением

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

Неактивен

 

#5 11.06.2017 03:34:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

https://dev.mysql.com/doc/refman/5.7/en … igger.html

для вставки новых данных что-то вроде

delimiter //
create trigger test_ai after insert on `A`
for each row
begin
insert into `B` (список полей) values(new.`имя поля1`, ..);
end//


аналогично для update и delete

Неактивен

 

#6 11.06.2017 03:49:31

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

для вставки новых данных что-то вроде

delimiter //
create trigger test_ai after insert on `A`
for each row
begin
insert into `B` (список полей) values(new.`имя поля1`, ..);
end//


аналогично для update и delete

если правильно понял то это три разных триггера и они должны выглядеть так (на примере таблицы objectsw):


create trigger test_ai after insert on `objectsw`
for each row
begin
insert into `objects` * ;   <-------- (*) - типа по всему списку полей
 

и вместо insert подставляем update и delete для двух оставшихся триггеров?

Неактивен

 

#7 11.06.2017 03:51:33

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

да

Неактивен

 

#8 11.06.2017 03:55:44

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

да

спасибо, ща попробую, отпишусь...

Неактивен

 

#9 11.06.2017 04:07:47

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

да

делаю такой запрос


create trigger test_ai after insert on `objectsw`
for each row
begin
insert into `objects` *;
END
 

  #1064 - У вас ошибка в запросе. Изучите документацию на предмет корректного синтаксиса около '*' на строке 4

Неактивен

 

#10 11.06.2017 04:13:48

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

нет такого синтаксиса со *
https://dev.mysql.com/doc/refman/5.7/en/insert.html

Неактивен

 

#11 11.06.2017 04:29:21

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

нет такого синтаксиса со *
https://dev.mysql.com/doc/refman/5.7/en/insert.html


create trigger test_ai after insert on `objectsw`
for each row
begin
insert into `objects`;
END
 


тогда
#1064 - У вас ошибка в запросе. Изучите документацию на предмет корректного синтаксиса около '' на строке 4

Неактивен

 

#12 11.06.2017 04:30:52

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

нет такого синтаксиса со *
https://dev.mysql.com/doc/refman/5.7/en/insert.html

sad   по этому и прошу помощи...

Неактивен

 

#13 11.06.2017 04:33:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

а чем тут можно помочь? просто перечислить весь список полей
insert into `B` (список полей) values(new.`имя поля1`, ..);

Неактивен

 

#14 11.06.2017 04:39:21

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

а чем тут можно помочь? просто перечислить весь список полей
insert into `B` (список полей) values(new.`имя поля1`, ..);

у меня их 74 штуки smile ...и их все туда забивать?

Отредактированно abu2002 (11.06.2017 04:39:48)

Неактивен

 

#15 11.06.2017 04:42:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

да

Неактивен

 

#16 11.06.2017 05:17:19

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

vasya написал:

да

все...бросаю создание сайтов.... hmm

Отредактированно abu2002 (11.06.2017 05:17:43)

Неактивен

 

#17 11.06.2017 05:54:51

abu2002
Участник
Зарегистрирован: 11.06.2017
Сообщений: 11

Re: Копирование таблицы 'A' со всеми данными в таблицу 'B'

abu2002 написал:

vasya написал:

да

все...бросаю создание сайтов.... hmm

или нет, не бросаю... smile
может кому пригодится
есть решение (под носом было) с помощью тех же вьюшек (представлений),
нужно поменять местами имена вьюшки с таблицей


RENAME TABLE `database_db`.`A` TO `database_db`.`B`;
CREATE VIEW A as SELECT * FROM B
 

и триггеры не нужны...

Отредактированно abu2002 (11.06.2017 05:55:43)

Неактивен

 

Board footer

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