首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >临时自动增量列上Delphi + Zeos,多个查询失败?

临时自动增量列上Delphi + Zeos,多个查询失败?
EN

Stack Overflow用户
提问于 2013-02-27 07:50:16
回答 1查看 655关注 0票数 1

假设我有一个非常简单的桌子:

代码语言:javascript
复制
CREATE TABLE Bands (Name VARCHAR(20) NOT NULL) ENGINE = INNODB;
INSERT INTO Bands VALUES ('Hammerfall'), ('Helloween'), ('Haggard'),
                         ('Therion'), ('Tarja');

并运行一个查询:

代码语言:javascript
复制
SET @i := 0;
SELECT @i := @i + 1 No, Name
FROM Bands
WHERE Name LIKE 'H%'

在HeidiSQL和PhyMyAdmin上,它运行良好:

代码语言:javascript
复制
1 Hammerfall
2 Helloween
3 Haggard

但是在德尔菲,2009年失败了

server :您的SQL语法有一个错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,在“SELECT @i := @i +1 No”附近使用“SELECT@i@i+1 No”,即名称为“H%”的波段的名称

我用TZQuery.SQL框、Query.SQL.Text和Query.SQL.Add()编写查询。都失败了。

有办法运行这个查询吗?

我将使用的真正查询是连接一些20+列表来生成一些报告。但我甚至不能让这个小东西在~__~上工作

EN

回答 1

Stack Overflow用户

发布于 2013-02-27 18:45:25

正如评论者所指出的,这个问题是双重的.

  1. 不能在单个SQL中执行2条语句(这是防止SQL注入的一种保护措施)。
  2. 如果是:,则不能使用TQuery.CheckParams = true

请注意,使用没有显式主键的InnoDB表是个坏主意。

问题是,如果您不创建一个PK,MySQL将为您创建一个隐藏的PK,这将降低连接性能。

如果希望InnoDB高效运行,则建议创建

代码语言:javascript
复制
integer primary key auto_increment

每张桌子上都有字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15106721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档