从 MySQL 查询中获取当前会话/进程 ID

7
我正在尝试创建一个伪数组变量的表格,看起来像这样:
CREATE  TABLE IF NOT EXISTS `MyArray`.`ArrayTable` (
  `ID` INT UNSIGNED NOT NULL COMMENT 'Hash value of SessionID + ArrayName' ,
  `SessionID` INT UNSIGNED NOT NULL ,
  `ArrayName` CHAR(26) NOT NULL 
          COMMENT '32 digit char - 6 digit longest process id (assumtion)' ,
  `Index` INT UNSIGNED NOT NULL ,
  `Value` TEXT NOT NULL ,
  PRIMARY KEY (`ID`, `SessionID`) )
ENGINE = MyISAM;
表格还没有标准化,希望这会让理解变得更简单 :)

为了避免客户端之间的冲突,需要在客户端会话之间引入区分因素。因此,我认为需要知道当前会话/进程ID(就像“SHOW PROCESSLIST”一样),但真正需要知道的是查询在哪个进程中进行?


你难道没有其他可以使用的识别信息吗?比如客户端的IP地址,用户名等,这些才真正能够识别客户端,而不是一些伪随机数?会话/进程ID可能会随时间重复。 - lexu
一个客户端IP和一个用户名可以创建许多连接到服务器,所以我不认为这会起作用。但是是的,你指出了我忽略的事情,“会话/进程ID随时间可能会重复”。现在我在考虑添加创建时间作为变量。 - Indra Ginanjar
顺便提一下,在 MySQL 重启后,线程 ID 会被重置。只要服务器在运行,这些 ID 就不会被重新使用。 - newtover
1个回答

22
你可以使用connection_id()函数。该函数的详细信息请参考这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接