X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Триггер на вставку записей из таблицы, содержащей Внешние ключи / MySQL
natmiku
natmiku
Topic Starter сообщение 15.2.2014, 1:00; Ответить: natmiku
Сообщение #1


Уважаемые участники форума, возможно кто либо из вас поможет с решением или с советом?

Есть таблица `vehicles`, которая хранить в себе Внешние ключи других таблиц:
CREATE TABLE IF NOT EXISTS `vehicles` (
`vehicle_id` INT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`vehicle_name` VARCHAR(45) NOT NULL,
`make_id` INT(8) UNSIGNED NOT NULL,
`model_id` INT(8) UNSIGNED NOT NULL,
`transmission_id` INT(8) UNSIGNED NOT NULL,
`style_id` INT(8) UNSIGNED NOT NULL,
`fuel_id` INT(8) UNSIGNED NOT NULL,
`mileage` FLOAT NOT NULL,
`volume` VARCHAR(45) NOT NULL,
`price` FLOAT NOT NULL,
`year` INT(8) NOT NULL,
`date_added` DATE NOT NULL,
PRIMARY KEY (`vehicle_id`),
KEY `make_id` (`make_id`),
KEY `model_id` (`model_id`),
KEY `transmission_id` (`transmission_id`),
KEY `style_id` (`style_id`),
KEY `fuel_id` (`fuel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



Есть еще одна таблица-"зеркало" `search`:
CREATE TABLE IF NOT EXISTS `search` (
`vehicle_id` INT(11) NOT NULL DEFAULT '0',
`vehicle_name` VARCHAR(255) DEFAULT NULL,
`make_name` VARCHAR(255) DEFAULT NULL,
`model_name` VARCHAR(255) DEFAULT NULL,
`style_name` VARCHAR(255) DEFAULT NULL,
`fuel_type` VARCHAR(255) DEFAULT NULL,
`mileage` VARCHAR(255) DEFAULT NULL,
`year` VARCHAR(255) DEFAULT NULL,
`volume` VARCHAR(255) DEFAULT NULL,
`transmission_name` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`vehicle_id`),
FULLTEXT KEY `IX_search` (`vehicle_name`,`make_name`,`model_name`,`style_name`,`fuel_type`,`mileage`,`year`,`volume`,`transmission_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


И возникает вопрос с триггером (привожу примерно конечно да и самый простой, что по-зубам оказался...)

DROP TRIGGER IF EXISTS `tg_insert_vehicle`;
DELIMITER //
CREATE TRIGGER `tg_insert_vehicle` AFTER INSERT ON `vehicles`
FOR EACH ROW INSERT INTO cardealer_db.SEARCH( vehicle_id, vehicle_name, mileage, YEAR, volume)
VALUES(
NEW.vehicle_id,
NEW.vehicle_name,
NEW.mileage,
NEW.YEAR,
NEW.volume
)
//
DELIMITER ;


Все работает как и полагается, за исключением конечно того, что поля make_name, model_name, style_name.... будут равны NULL.
И ВОПРОС: Возможно ли написать триггер так, чтобы заполнялась вся таблица `search` целиком?
Т.е вместо пустых значений в колонках: search.make_name, search.model_name etc стояли соответствующие им значения по вставленным id (vehicles.make_id, vehicles.model_id etc)?
Или возможно ли выполнить это с помощью VIEW например(где можно объединить только интерисующие меня колонки)?

И заранее благодарю за ответы или наводки!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 16.2.2014, 21:18; Ответить: Arks
Сообщение #2


Мне кажется все просто:
DROP TRIGGER IF EXISTS `tg_insert_vehicle`;
DELIMITER //
CREATE TRIGGER `tg_insert_vehicle` AFTER INSERT ON `vehicles`
FOR EACH ROW INSERT INTO cardealer_db.SEARCH( vehicle_id, vehicle_name, make_name, mileage, YEAR, volume)
VALUES(
NEW.vehicle_id,
NEW.vehicle_name,
(SELECT name FROM make_table WHERE id = NEW.make_id LIMIT 1 ),
NEW.mileage,
NEW.YEAR,
NEW.volume
)
//
DELIMITER ;


VIEW это по сути хранимый запрос(например JOIN между vehicles.make_id и make_table, содержащий полную информацию make_table по соответствиям c vehicles), использовать его или нет решайте сами.
А лучше не мучьте зверька триггерами и посмотрите в сторону sphinx
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
natmiku
natmiku
Topic Starter сообщение 17.2.2014, 1:12; Ответить: natmiku
Сообщение #3


Спасибо большое за ответ - все работает замечательно!
И за совет тоже благодарю, собираюсь к нему прислушаться!

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1241 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВнешние ссылки - для Google, любые темы + скидка!
ссылочное превосходство конкурентов
34 mvchansas 22401 30.8.2022, 15:54
автор: mvchansas
Открытая тема (нет новых ответов) Внешние ссылки где еще разместить
5 muratastana 7107 10.11.2021, 18:48
автор: muratastana
Открытая тема (нет новых ответов) Web программирование на С/С++/PHP/MySQL/SQL, высоконагруженные проекты
Есть наработки в области бирж трафика, топов, тизеров, видео cj-тубов
4 DFService 3350 8.4.2020, 18:02
автор: DFService
Открытая тема (нет новых ответов) Ищу плагин для импорта записей с VK
с VKонтакта для Wordpress
1 nekokatalog 2401 29.12.2019, 19:32
автор: Osipec


 



RSS Текстовая версия Сейчас: 19.4.2024, 5:41
Дизайн