首页 > 解决方案 > 如果引用记录不存在其他插入,我如何创建表?

问题描述

我设计了一个系统,它接收到带有 ResortId、DayId、SkierId、Time、LiftId 的请求。

我创建了一个名为 day_resort 的表,其中包含 ResortId、DayId 和一个等于 ResortId 和 DayId 串联的引用。当我收到带有参考(ResortId + DayId)的请求时,day_resort 中存在。我将简单地找到名称 = Reference 的表,并在其中插入 SkierId、Time 和 LiftId。相反,如果我在day_resort中没有找到某个Reference,我会在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 命令不同步;你现在不能运行这个命令

谢谢你的帮助

标签: mysqlsqlsql-server

解决方案


推荐阅读