#mysql #sql #sql-server
#mysql #sql #sql-сервер
Вопрос:
Я разработал систему, которая получила запрос с ResortId, DayId, SkierId, Time, LiftId .
Я создал таблицу с именем day_resort с ResortId, DayId и ссылкой, которая равна конкатенации ResortId и DayId. Когда я получил запрос со ссылкой (ResortId DayId) существует в day_resort . Я просто найду таблицу с name = Reference и вставлю туда SkierId, Time и LiftId . Напротив, если я не найду определенную ссылку в day_resort, я создам имя таблицы после ResortId DayId, и я вставлю запись с ResortId, DayId, ResortId DayId в day_resort, после этого я перейду к имени таблицы после ResortId DayId и вставлю записьс SkierId, Time и LiftId.
Вот пример, который я попробовал:
DELIMITER //
DROP PROCEDURE IF EXISTS createLogTable;
CREATE PROCEDURE createLogTable(tblName VARCHAR(255))
BEGIN
SET @tableName = tblName;
SET @sql := CASE
WHEN NOT EXISTS (SELECT * FROM day_resort WHERE Reference = @tableName) THEN
'INSERT INTO day_resort (ResortId, DayId, Reference) VALUES ("Marriot", "21", "Marriot21")';
ELSE
CONCAT('INSERT INTO `' , @tableName, '` (SkierId, TIme, LiftId) VALUES ("111", "222", "333")');
END;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
CREATE TABLE IF NOT EXISTS @tableName (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
SkierId VARCHAR(255) NOT NULL
Time VARCHAR(255) NOT NULL,
LiftId VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
END //
Я получил сообщение об ошибке с кодом ошибки: команды 2014 не синхронизированы; вы не можете запустить эту команду сейчас
Спасибо за любую помощь
Комментарии:
1. Этот синтаксис НЕ является tsql, поэтому вы должны удалить этот тег.
2. Но зачем все это делать?
3. @Strawberry Пожалуйста, дайте мне какие-нибудь полезные мысли. Если вы не рекомендуете мне это делать, тогда предоставьте мне лучший способ. Это гораздо полезнее, чем говорить, зачем делать что-либо из этого.
4. Но я хотел бы понять ваши рассуждения. Почему вы используете процедуру для создания таблицы?