Как мне создать таблицу, если ссылочная запись не существует else insert?

#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. Но я хотел бы понять ваши рассуждения. Почему вы используете процедуру для создания таблицы?