你好,我有一个基于MYSQL开发的项目,考虑由于商业软件许可证成本的原因转移到PostGres。
在我的MYSQL中,我有多个表格,我依赖于UUID_SHORT()函数作为这些表格的主键。请参阅链接:Mysql UUID_SHORT Info
PostGres是否有类似UUID_SHORT函数的功能? 我正在寻找一个唯一的ID,而不是一个序列。同时,类似UUID_SHORT基于系统时间的函数也会很棒。此外,下面是我在PHP中使用的类函数,当我想要获取用于MYSQL主键插入的唯一ID时使用。
非常感谢您的任何意见,因为这将是转移到PostGres的主要原因。
function getUniqueId(){
//return unique id
$temp_id = strval(uniqid());
$temp = $this->conn->prepare('CREATE TEMPORARY TABLE tempId (temp_id VARCHAR(30) PRIMARY KEY, id BIGINT UNSIGNED)');
$temp->execute();
$temp = $this->conn->prepare('INSERT INTO tempId(temp_id, id) VALUES(:temp_id, UUID_SHORT())');
$temp->bindParam(':temp_id', $temp_id, PDO::PARAM_STR);
$temp->execute();
$temp = $this->conn->prepare('SELECT id FROM tempId WHERE temp_id = :temp_id ');
$temp->bindParam(':temp_id', $temp_id, PDO::PARAM_STR);
$temp->execute();
$tempResult= $temp->fetchAll(PDO::FETCH_ASSOC);
$temp = $this->conn->prepare('DROP TEMPORARY TABLE tempId');
$temp->execute();
$temp_id = $tempResult[0]['id'];
return $temp_id;
}