Is it possible to write a procedure in SQL Server that, before executing INSERT into a table, calls a function to check the format of email (1/0)?
INSERT will be executed only if the result of the checkemail function is 1, and in case of 0 it will return the error 'email is not valid'.
How it's done?
CheckEmail function:
CREATE FUNCTION dbo.CheckEmail
(@Email VARCHAR(100))
RETURNS BIT
AS
BEGIN
DECLARE @Result BIT
IF @Email IS NOT NULL
BEGIN
IF @Email LIKE '%["<>'']%'
OR @Email NOT LIKE '%@%.%'
OR @Email LIKE '%..%'
OR @Email LIKE '%@%@%'
OR @Email LIKE '%.@%'
OR @Email LIKE '%@.%'
OR @Email LIKE '%.cm'
OR @Email LIKE '%.co'
OR @Email LIKE '%.OR'
OR @Email LIKE '%.ne'
OR @Email LIKE '@%'
SET @Result = 0;
ELSE IF @Email LIKE '%_@__%.__%'
AND PATINDEX('%[^a-z,0-9,@,.,_,\-]%', @Email) = 0
SET @Result = 1;
END
RETURN @Result;
END
Users table:
CREATE TABLE Users
(
"Id" UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(),
"Email" VARCHAR(40) NOT NULL UNIQUE,
"Username" VARCHAR(30) NOT NULL,
"Password" VARCHAR(30) NOT NULL,
"Name" NVARCHAR(50) NOT NULL,
"Surname" NVARCHAR(50) NOT NULL
)