Скрипт за Mysql база данни

sparc

Active Member
Дайте предложения за скрипт, който копира стойността на клетка от една таблица в друга в базата с данни. Например имам две таблици в базата с данни с име "Тест". Първата таблица се казва "таблица 1", а втората "таблица 2". Двете таблици имат съвпадащи по имена клетки "клетка 1", "клетка 2" и "клетка 3". Когато въведа стойност в клетките на "таблица 1" искам същите стойности да се копират в клетките на "таблица 2".
Предварително Благодаря
 
От: Скрипт за Mysql база данни

inert into t2
select c1,c2,c3
where id = (select max(id) from t1)

Опитах, но нещо ми дава грешка, primary key в двете таблици е различен.
 
От: Скрипт за Mysql база данни

sorry
написал съл inert внести insert
в клаузата няма връзка по Primary key
има само селект по този key
 
От: Скрипт за Mysql база данни

Дай самата схема на базите данни(или част от схемата с таблиците с дублиращото съдържание) за да мога да конструирам заявка.
 
От: Скрипт за Mysql база данни

Ще ти предложа вариант с тригер, ако използваш MySQL 5 и нагоре.

CREATE TRIGGER `myCopy` AFTER INSERT ON `Table1` FOR EACH ROW BEGIN
insert into Table2
SET col1 = Table1.col1, col2 = Table1.col2, col3 = Table1.col3;
END;

Като реализираш тригера вече няма да имаш грижа за запълване на полетата при добавяне в първата таблица. Данните ще се добавят автоматично при всяко вмъкване на нов ред в първата таблица.
 
От: Скрипт за Mysql база данни

Ще ти предложа вариант с тригер, ако използваш MySQL 5 и нагоре.

CREATE TRIGGER `myCopy` AFTER INSERT ON `Table1` FOR EACH ROW BEGIN
insert into Table2
SET col1 = Table1.col1, col2 = Table1.col2, col3 = Table1.col3;
END;

Този TRIGGER можели да се използва директно в базата с данни чрез SQL заявка?

Поздрави
 
От: Скрипт за Mysql база данни

Да, изпълнява се еднократно за да се създаде тригера. След това, Mysql автоматично при всяко вмъкване в таблица Table1 изпълнява тялото на тригера. В случая вмъкване и в таблица Table2.

П.С. Друго, което се сещам е че доста от доставчиците на хостинг са забранили тази функционалност на Mysql сървъра си.
 
От: Скрипт за Mysql база данни

П.С. Друго, което се сещам е че доста от доставчиците на хостинг са забранили тази функционалност на Mysql сървъра си.
Ще пробвам дано от Спейс.бг не са го забранили. Всъщност горния код автоматично отразявали промените например ако променя някой стойности в в таблица 1 дали автоматично се отразяват в таблица 2? Натоварва ли тригера много базата с данни?

ПОЗДРАВИ
 
От: От: Скрипт за Mysql база данни

В този случай става въпрос при вмъкване на запис в едната таблица, да го вмъкне и в другата. За обновяване на полета си има друг синтаксис "BEFORE / AFTER UPDATE ..

Този вариант е доста по-бърз от ръчното синхронизиране защото тригера се изпълнява на ниво сървър.
Относно забраната, ако не става може да ги помолиш те да ти го създадат тригера. На мен ми се е налагало веднъж при суперхостинг! Свързах се с тях да ги питам защо не може! Те ми казаха, че е заради сигурността, но ми казаха да им изпратя кода да го видят и ако не им се стори опасен да го изпълнят ..
 

Горе