Nesta página, temos uma compilação de dicas curtas para MySQL, encontradas nas Internets da vida, testadas e registradas.
Para gerar uma chave primária no formato de String no MySQL, usamos o código:
CREATE TABLE tablename (
id VARCHAR(63) PRIMARY KEY NOT NULL DEFAULT (SHA1(UUID_SHORT())),
outros campos...
)
Explicando:
id → Campo da chave primária;
VARCHAR(63) → Para armazenar uma sting de até 63 caracteres;
A string que vamos obter tem 41 caracteres ou dígitos hexadecimais!
UUID_SHORT() → Gera um ìd único, da mesma forma que geramos a chave primária com AUTO_INCREMENT;
SHA1() → Criptografa o id gerado na forma de um hash hexadecimal;
other_fields → Outros da tabela.
Uma alternativa é usar a função UUID() para gerar a chave primária. A diferença é que ela gera uma chave "mais suja", que inclui o caracter dash (-). Por exemplo:
SELECT UUID_SHORT();
gera algo como:
100456755233816603
Já o trexo:
SELECT UUID();
obtém algo como:
167dda39-4112-11ee-b7e6-0a002700000a
Finalmente, usando SHA1() e UUID_SHORT():
SELECT SHA1(UUID_SHORT());
Temos algo como:
392a415ab7830e6a112589b537958e629dd0816a
Para gerar a chave primária com UUID(), fazemos algo como:
CREATE TABLE tablename (
id VARCHAR(63) PRIMARY KEY NOT NULL DEFAULT (UUID()),
outros campos...
)
Isso é útil para gerar um campo com uma data de expiração, data de vencimento ou qualquer data futura, com base na data atual. Vamos usar a função DATE_ADD(), adicionando, por exemplo, dias na data atual.
Por exemplo, vamos criar a tabela agenda:
CREATE TABLE agenda (
id INT PRIMARY KEY AUTO_INCREMENT,
cadastro TMESTAMP DEFAULT CURRENT TIMESTAMP,
consulta TIMESTAMP AS (DATE_ADD(NOW(), INTERVAL 10 DAY))
);
Neste exemplo, ao inserir um novo registro, o campo cadastro recebe a data atual do sistema e o campo consulta recebe a data atual, fornecida por NOW(), somando 10 dias.
Podemos usar outros incrementos como "horas" (HOUR) ou "anos" (YEAR), por exemplo. Também podemos usar DATE_SUB() que subtrai um intervalo de uma data.