我创建了如下表:如何改进以下存储过程以验证电子邮件的语法?
CREATE TABLE TBL_EMAIL
(
ID INT IDENTITY PRIMARY KEY,
EMAIL VARCHAR(25) NOT NULL
);
我想创建一个存储过程,以检查是否有新邮件的语法是好的,我只是想掩盖两种可能性,如果此邮件还没有一个“@ “字符如下:
INSERT INTO TBL_EMAIL (EMAIL)
VALUES ('email.com')
并且如果该电子邮件还没有相应的点:
INSERT INTO TBL_EMAIL (EMAIL)
VALUES ('[email protected]')
我只是想掩盖这种情况下,CR eate一个存储过程时,有一个插入到被激活或更新
CREATE TRIGGER Tr_Verify_Email
ON TBL_EMAIL
FOR INSERT,UPDATE
AS
BEGIN
变量声明的同时,还有一些标志知道,如果“@”位于第一位置里面算,
DECLARE @V_COUNT INT,@FLAG INT
DECLARE @V_EMAIL_INSERTED VARCHAR(25)
SET @V_COUNT = 1
SET @FLAG = 0
SELECT @V_EMAIL_INSERTED = EMAIL FROM INSERTED;
WHILE(@V_COUNT < LEN(@V_EMAIL_INSERTED)) BEGIN
IF(SUBSTRING(@V_EMAIL_INSERTED,@V_COUNT,1)='@' AND @V_COUNT > 4) BEGIN
SET @FLAG = @FLAG + 1
END
SET @V_COUNT = @V_COUNT + 1
END
回滚事务时使用的电子邮件和“@”在第一位置,
IF(@FLAG <> 1) BEGIN
RAISERROR('Invalid Email',16,1)
ROLLBACK TRANSACTION
END
END
然而,这是我第一次的做法,但据我所知,有很多缺失的C Ases和无效的电子邮件,因此我想感谢提高我的逻辑的建议,只允许使用我认为是[email protected]
的拨款结构的电子邮件,感谢您的支持。
。 。我修复了标签。凭借您的声誉水平,您应该知道避免不兼容的数据库标记,并将适当的软件放在问题上。 –
对不起,感谢修复,我非常感谢支持。 – neo33