我在表格列上创建一个简单的约束,它只接受前三个字母的3个大写字母,一个短划线" - "以及随后的六个数字。到目前为止,我的插页因此被拒绝了:
我的约束:
ALTER TABLE EQUIPOS
ADD CONSTRAINT NOMBRE CHECK (idEnlace like('[A-Z][A-Z][A-Z]-[0-9][0-9][0-9][0-9][0-9][0-9]'))
GO
触发所有上限:
CREATE TRIGGER TR_UPPER_NOMBRE
ON EQUIPOS
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO equipos
SELECT UPPER(I.codEquipo),I.marcaEquipo,I.fchEquipo,I.vtoEquipo,I.idEnlace
FROM INSERTED I
END
GO
编辑:应该有效的内容示例:
'JHS-929323'
应该无效的东西
'JHs-929323'
'JHS-99323'
'JHS929323'
我认为约束是错误的。之后发生的事情并没有得到正确的验证。对于之前做过类似事情的人有什么建议吗?
答案 0 :(得分:1)
创建一个像这样的约束....
ALTER TABLE EQUIPOS
ADD CONSTRAINT NOMBRE CHECK
(
LEFT(idEnlace,3) = UPPER(LEFT(idEnlace,3)) COLLATE Latin1_General_CS_AI
AND SUBSTRING(idEnlace,4,1) = '-'
AND RIGHT(idEnlace,6) NOT LIKE '%[^0-9]%'
AND LEN(idEnlace) = 10
)
GO
答案 1 :(得分:-1)
CREATE TABLE #TestTable
(ID INT identity(1,1), FirstCol VARCHAR(100),
CONSTRAINT FirstCol CHECK (FirstCol LIKE '%[A-Z][A-Z][A-Z]-[0-9][0-9][0-9][0-9][0-9]/M%'
or FirstCol LIKE '%[A-Z][A-Z][A-Z]-[0-9][0-9][0-9][0-9][0-9]/F%'))