是否可以在 SQL 脚本中使用变量和表达式(对于 MySQL)? (最初错误地发布到 ServerFault)

Is it possible to have variables and expressions in an SQL script (for MySQL)? (originally mis-posted to ServerFault)

我有一个 SQL 脚本,它在 MySQL 数据库中创建三个新的 table,并在这些新的 table 中安装字段。

此数据库中的几个 table 包含 table 上包含用户数据的元数据,我的脚本将记录添加到这些元数据 table 中, 使新的 tables 和字段对应用程序可见。例如,对于 table“foo”,必须将记录添加到“对象”table,对于“foo”中的每个字段,必须将记录添加到“字段” table,告诉应用程序它需要了解的关于该字段的信息。如果“foo”在“对象”table 中的 ID 为 51,则“字段”table 中“foo”字段的所有记录都必须将其列为对象 51 .

(这其实是一个简化版,真实的更复杂。)

目前,我的脚本覆盖了“对象”和“字段”的 ID 字段的自动递增,并在这些记录的 INSERT 语句中使用了硬编码 ID,将它们放入不太可能的范围内与任何现有记录冲突。

但是如果我们需要使用不同的范围,那么我们需要对所有这些硬编码 ID 进行搜索和替换。

有没有一种方法可以将硬编码 ID 替换为允许我们轻松将范围放在需要去的任何地方的东西?

我想这对你有帮助

How to declare a variable in MySQL?

》MySQL中主要有三类变量:

  1. User-defined 个变量(以@为前缀)
  2. 局部变量(无前缀)
  3. 服务器系统变量(以@@为前缀)