小编Dan*_*ana的帖子

更新列的 T-SQL 触发器

我已经使用 SQL 查询几个星期了,我正在尝试从错误中学习和理解。我有两列的表IsInvisible (bit)ShortName (string)当一个被改变为更新的另一个也如: -如果添加〜于SHORTNAME到组的前面IsInvisible为1,并且如果〜被去除,以将其设置为0 -如果IsInvisible被设置为1 在 ShortName 前面添加 ~ 并在设置为 0 时将其删除。

我试过这样的事情:

ALTER TRIGGER [dbo].[updateInvisibility]
ON [dbo].[table]
AFTER UPDATE
AS
BEGIN

UPDATE t
SET IsInvisible = (CASE WHEN i.ShortName like '~%' THEN 1 ELSE 0 END),
    ShortName = (CASE WHEN i.IsInvisible = 1 AND t.ShortName NOT LIKE '~%'
                 THEN '~' + t.ShortName
                 ELSE t.ShortName
            END)
FROM table t JOIN
     inserted i
     ON t.Id = i.Id;

end
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我更新其中一列或同时更新两列时,没有任何反应,并且出现此错误:

Maximum stored …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server t-sql

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

使用另一个表中的最大值和最小值更新 T-SQL

我对 SQL 查询没有太多经验,我正在尝试从错误中学习和理解。我有两张桌子:

CREATE TABLE #TempTest
(Id INT,
Number INT)

CREATE TABLE #TempTest2
(Id INT,
MaxNo INT,
MinNo INT)

INSERT INTO #TempTest VALUES (1,4)
INSERT INTO #TempTest VALUES (1,6)
INSERT INTO #TempTest VALUES (1,9)
INSERT INTO #TempTest VALUES (1,7)
INSERT INTO #TempTest VALUES (1,3)
INSERT INTO #TempTest VALUES (1,1)
INSERT INTO #TempTest VALUES (1,5)

INSERT INTO #TempTest2 VALUES (1,0,10)
Run Code Online (Sandbox Code Playgroud)

我正在尝试更新MaxNo第一个表中最大数小于 8 且MinNo最小数大于 1 的列:

UPDATE t2
SET MaxNo = IIF(t1.Number>t2.MaxNo AND t1.Number<8,t1.Number, t2.MaxNo),
MinNo = IIF(t1.Number<t2.MinNo …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql update

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

标签 统计

sql-server ×2

t-sql ×2

trigger ×1

update ×1