首页 > 解决方案 > SQL语法错误:两个不同的平台报不同的错误

问题描述

我正在尝试制作两个数据库表并将它们链接在一起。这是我的代码:

CREATE TABLE `NYSE_daily_prices_A` (
`StockSymbol` varchar(10)  NOT NULL ,
`StockName` varchar(100)  NOT NULL ,
`StockExchange` varchar(10)  NOT NULL ,
PRIMARY KEY (
    `StockSymbol`
)
);

CREATE TABLE `NYSE_stock_names` (
    `StockExchange` varchar(10)  NOT NULL ,
    `StockSymbol` varchar(10)  NOT NULL ,
    `date` varchar(10)  NOT NULL ,
    `StockPriceOpen` money  NOT NULL ,
    `StockPriceHigh` money  NOT NULL ,
    `StockPriceLow` money  NOT NULL ,
    `StockPriceClose` money  NOT NULL ,
    `StockVolume` int  NOT NULL ,
    `StockPriceAdjClose` money  NOT NULL 
);

ALTER TABLE `NYSE_stock_names` ADD 
CONSTRAINT `fk_NYSE_stock_names_StockSymbol` 
FOREIGN KEY(`StockSymbol`)
REFERENCES `NYSE_daily_prices_A` (`StockSymbol`);

我尝试在 SQLiteStudio 中运行此脚本,它报告如下错误:

在此处输入图像描述

但是,我将脚本复制到 SQL Fiddle 并报告如下:

在此处输入图像描述

这真的让我很困惑。如何解决这个问题?提前致谢。

标签: mysqldatabasesqlite

解决方案


从 SQLite 的ALTER TABLE

SQLite 中的 ALTER TABLE 命令允许对现有表进行以下更改:可以重命名;可以添加一列;或者可以从中删除一列。

这意味着使用 SQLite,您不能将外键约束添加到现有表。
此外,没有varcharmoney数据类型(它们分别被解释为TEXTNUMERIC亲和),但这不是错误的来源。

在 Mysql 中没有money数据类型。
您可以阅读此线程以获取替代方案:Best data type to store money values in MySQL

如果删除反引号,您的代码在 SQL Server 和 Postgresql 中有效,但在 MySql 和 SQLite 中无效。


推荐阅读