Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server对字母和数字的类检查约束以及触发器_Sql Server_Triggers_Constraints - Fatal编程技术网

Sql server SQL Server对字母和数字的类检查约束以及触发器

Sql server SQL Server对字母和数字的类检查约束以及触发器,sql-server,triggers,constraints,Sql Server,Triggers,Constraints,我在表的列上创建了一个简单的约束,它只接受前三个字母的3个大写字母,一个破折号“-”和后面的6个数字。到目前为止,我的插入被拒绝,因为: 我的限制: 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 所有CAP的触发器: CREATE TRIGGER TR_UPPER_NOMBRE ON EQUIPOS IN

我在表的列上创建了一个简单的约束,它只接受前三个字母的3个大写字母,一个破折号“-”和后面的6个数字。到目前为止,我的插入被拒绝,因为:

我的限制:

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
所有CAP的触发器:

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'

我认为限制是错误的。Like之后发生的事情没有得到正确的验证。对以前做过类似事情的人有什么建议吗?

创建一个类似这样的约束

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

你的问题是什么?虽然我注意到你正在转换为大写的列与带有检查约束的列不同。为什么我的问题会被否决?我不在乎,但我很好奇,所以我可以用一种更好的方式问你。你没有问任何问题。您刚刚声明了一个需求并转储了一些代码。你也没有提供一个MVCE来说明你在代码中遇到的任何问题。@mitbanip:不是我的反对票,但是你没有提供任何方法来重现错误。发布查询、预期行为和观察到的行为。“这是我的查询,我希望查询可以这样做,但它可以这样做。”。
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%'))