Única solução encontrada até o momento foi gerar o UUID direto no PHP. Para isso, existem duas vertentes, criar um algoritmo ou usar uma biblioteca.
Optei por utilizar um algoritmo. Criei uma biblioteca interna do Scriptcase para assim poder utilizar em quantas aplicações eu quiser utilizando um mesmo código, assim, facilitando a manutenção do código.
Esse código cria o UUID e verifica se ele existe em nossa tabela. Depois, o código é retornado.
Para usar ele, basta ativar a biblioteca interna que você criou, no OnBeforeInsert chamar a função gerarUUID que criamos e passar o retorno dela para a nosso campo Primary Key.
<?php
function gerarUUID($tabela, $coluna) {
// Função para gerar UUID v4
function generateUuidV4() {
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
mt_rand(0, 0xffff),
mt_rand(0, 0x0fff) | 0x4000,
mt_rand(0, 0x3fff) | 0x8000,
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
}
// Gerar um UUID único
do {
$novo_uuid = generateUuidV4();
sc_lookup(ds, "SELECT COUNT(*) FROM $tabela WHERE $coluna = '$novo_uuid'");
$count = {ds[0][0]};
} while ($count > 0);
// Atribuir o UUID gerado ao campo no formulário
return $novo_uuid;
}
?>
Bom, foi assim que solucionei o problema até agora.
Acredito, entretanto, que o ideal seria deixar o próprio banco de dados criar e validar esse UUID e gerando assim sem a possibilidade de duplicidade e de maneira performática. Porém, para isso, não consegui ainda pelo Scriptcase.