小编Esc*_*per的帖子

无法摆脱TSQL中的if语句:触发器

这是我的触发器,它应该阻止用户在City中"@","$"或"_".如果有两个条件,它的工作完美

ALTER TRIGGER i_validation
ON dbo.Customer
FOR INSERT, UPDATE
AS
    DECLARE @i_not NVARCHAR(200)
begin
    SELECT @i_not = dbo.Customer.City 
    FROM dbo.Customer 
    JOIN inserted ON dbo.Customer.CustomerID = inserted.CustomerID

    IF((@i_not LIKE '%@%') OR (@i_not LIKE '%$%'))
    BEGIN
        THROW 50000, 'First name cannot contain: "@" ,"$" ,or "_"', 1;
    END;
END
Run Code Online (Sandbox Code Playgroud)

但是当我添加第三个条件时:

1Version.IF(( @i_not LIKE '%@%') OR ( @i_not LIKE '%$%') or @i_not LIKE '%_%' ) 
2Version. IF((( @i_not LIKE '%@%') OR ( @i_not LIKE '%$%')) OR @i_not LIKE '%_%' ) 
Run Code Online (Sandbox Code Playgroud)

如果还有其他的话,我也尝试了第二个

ALTER TRIGGER …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server triggers

1
推荐指数
1
解决办法
30
查看次数

“CREATE FUNCTION”必须是查询批中的第一个语句

每当我将其与其他 sql 语句一起运行时,都会出现错误:

CREATE FUNCTION' 必须是查询批中的第一个语句

但是,每当我单独执行它时(在我的情况下没有 SELECT * FROM CUSTOMER ,它就可以工作)

   SELECT * FROM CUSTOMER;

   create function udfLogin
    (@username nvarchar(100), @password nvarchar(100)) 
    returns int as
    begin
      if exists(select 1 from CUSTOMER where Username = @username and [Password] = @password)
        return 1
      return 0;
    end
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-function

1
推荐指数
1
解决办法
7919
查看次数

标签 统计

sql-server ×2

sql ×1

sql-function ×1

t-sql ×1

triggers ×1