1

我正在使用 MySQL 中的存储过程来更新 SQL 表中的一行。我所拥有的是一个表格,其中有几个列以增量方式命名。例如:Page_1、Page_2、Page_3....等。存储在这些位置的数据会在不同的时间更新,我还有另一列来存储该行的更新次数。每次程序运行时,count 变量都会增加,这使我可以利用它的值来跟踪数据的下一次更新应该发生的位置。

根据我的研究,我一直在寻找利用“动态 SQL”的解决方案。我不明白如何利用它来解决我的问题。

我想将一个变量作为列名传递给更新语句。

我目前拥有的代码如下。

 SET COUNT = COUNT + 1; -- modify count from count column
 SET COLUMNLOCATIONVARIABLE = CONCAT('Page_' , COUNT); -- concatenate the count with the column "Prefix"

 UPDATE Table
 SET COLUMNLOCATIONVARIABLE = INPUTVARIABLE --Use the concatenated statement as the column name and update it with input data
 WHERE mainID = INPUTID;

如果有人可以向我解释如何使用动态 SQL 或使用非动态 SQL 的其他解决方案将此变量作为列名传递,我将不胜感激。

提前致谢。

4

1 回答 1

0

这不是使用数据库的方式。为您的列创建一个新表,Page_*通过标识链接到主表,并带有页码列。然后,您可以根据需要更新和包含尽可能多的页面,并通过主要标识和页码进行寻址。

于 2013-08-05T21:28:51.883 回答