Stack Overflow em Português Asked on December 28, 2021
Olá estou criando uma tabela no SQLServer onde quero fazer a validação de um campo para só aceitar a máscara correta de versões, assim:
CREATE TABLE Versao (
id INT NOT NULL IDENTITY(1,1),
codigo NVARCHAR(100) NOT NULL,
CONSTRAINT [PK_Versao] PRIMARY KEY (id),
CONSTRAINT [CK_Versao_codigo] CHECK (codigo LIKE '%[0-9]+.[0-9]+.[0-9]+.[0-9]+%')
);
Meu problema é quando eu tento fazer a inserção de um registro mas não está funcionando, assim:
INSERT INTO Versao (codigo) VALUES ('0.123.0198651687.1');
Teoricamente, com base nesse teste que fiz no site RegExr o regex validaria se o código usado contém somente números e que tenha 4 blocos com 3 pontos entre eles, Sendo assim porque meu SQL Server não quer aceitar o insert?
Achei a solução logo após postar (rsrs), aqui está:
CREATE TABLE Versao (
id INT NOT NULL IDENTITY(1,1),
codigo NVARCHAR(100) NOT NULL,
--
CONSTRAINT [PK_Versao] PRIMARY KEY (id),
CONSTRAINT [CK_Versao_codigo] CHECK (codigo LIKE '[0-9]%.[0-9]%.[0-9]%.[0-9]%')
);
CREATE INDEX [UX_Versao_codigo] ON Versao(codigo);
INSERT INTO Versao(codigo) VALUES ('0.0.0.1'), ('1230.0.123120.1');
SELECT * FROM Versao
meu problema é que eu estava entendendo o CHECK como só aceitar se estiver dentro
Answered by LeandroLuk on December 28, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP