sql 中如何设置触发器使修改一个表中列的值时,同时修改另一个表的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 中如何设置触发器使修改一个表中列的值时,同时修改另一个表的值相关的知识,希望对你有一定的参考价值。
(1)在表depart上创建一个触发器 depart_update , 当更改部门号时同步更改 worker表中对应的部门号。
参考技术A 可以创建如下类似触发器create trigger depart_update on depart for update
as
begin
if update(deptno)
begin
update worker set deptno = b.deptno from inserted b where worker.col1 = b.col1
end
end本回答被提问者采纳
SQL Server 表未显示表中列的值
【中文标题】SQL Server 表未显示表中列的值【英文标题】:SQL Sever table is not showing value for a column in a table 【发布时间】:2020-07-08 19:28:25 【问题描述】:我们正在使用 Attunity 将数据从 Oracle 复制到 SQL Server。
在 Oracle 数据库中,表 MEMO 有一个 Description 列,该列具有一定的价值。
(for ID = 1)
Description = 'This is test record'
但是 SQL Server 没有在 Description 列中显示该值(其中 id =1),它显示为空。
当我使用 Dbeaver 查询同一个表时,Description 列显示一个字符“p”。
Description = 'P'
我尝试在 Notepad++ 中复制启用显示所有字符但仍然没有用。帮助我解决这种奇怪的行为。
【问题讨论】:
【参考方案1】: DECLARE @Result varchar(255)
SET @Result = ''
DECLARE @nchar nvarchar(1)
DECLARE @position int
SET @position = 1
WHILE @position <= LEN(@nstring)
BEGIN
SET @nchar = SUBSTRING(@nstring, @position, 1)
IF((ASCII(@nchar) BETWEEN 64 and 90) OR (ASCII(@nchar) BETWEEN 97 and 122) OR (ASCII(@nchar) BETWEEN 48 and 57) OR ASCII(@nchar) = 32)
BEGIN
SET @Result = @Result + @nchar
END
ELSE
BEGIN
DECLARE @asciichar varchar(10)
SET @asciichar = ASCII(@nchar)
SET @Result = @Result + REPLACE(@nchar,CHAR(@asciichar),'')
END
SET @position = @position + 1
END
RETURN @Result
END
【讨论】:
以上是关于sql 中如何设置触发器使修改一个表中列的值时,同时修改另一个表的值的主要内容,如果未能解决你的问题,请参考以下文章