从table1 update 到table2的sql写法

    由于系统中出现了不完整的数据,需要从另一个表中把数据更新过来,在SqlServer中的写法如下:
    update table2
    set table2.cc=table1.bb
    from table1,table2
    where table1.aa=table2.aa
    在oracle中却无法执行,问了一个牛人,原来oralce要这样写:
    update table2  
    set table2.cc= (select table1.bb from table1 where table1.aa=table2.aa)
    where exists (select 1 from table1 where table1.aa=table2.aa )

    怪不得写oracle的人价钱高,不服不行。

转载于:https://www.cnblogs.com/iseast/archive/2005/10/12/253132.html

### 回答1: SQL Server 触发器的 UPDATE 写法如下: ``` CREATE TRIGGER trigger_name ON table_name AFTER UPDATE AS BEGIN -- update logic here UPDATE table_name SET column1 = value1, column2 = value2 WHERE some_column = some_value END ``` - `CREATE TRIGGER` 是用来创建触发器的语句。 - `trigger_name` 是触发器的名称。 - `ON table_name` 是触发器所作用的表。 - `AFTER UPDATE` 表示触发器是在更新操作之后被触发。 - `BEGIN` 和 `END` 是触发器的主体,在这里面定义了触发器所要执行的逻辑。 - `UPDATE table_name` 是在触发器中执行的更新操作。 - `SET column1 = value1, column2 = value2` 是更新的字段和值。 - `WHERE some_column = some_value` 是更新的条件。 ### 回答2: 在SQL Server中,触发器是一种特殊的存储过程,它会在特定的条件下被自动调用。通常情况下,触发器用于监测数据库中的变化,并根据这些变化执行一些特定的操作。在使用触发器时,我们需要特别注意触发器的编写规范和更新写法SQL Server中的触发器分为三种类型:INSERT触发器、UPDATE触发器和DELETE触发器。其中,UPDATE触发器主要用于监测数据库中的更新操作。 在编写UPDATE触发器时,我们需要注意以下几个方面: 1. 触发器的创建语法:CREATE TRIGGER trigger_name {ON table_name | ON DATABASE} {FOR | AFTER | INSTEAD OF} {INSERT, UPDATE, DELETE} 2. 触发器的运行顺序:UPDATE触发器会在BEFORE UPDATE和AFTER UPDATE之间运行,我们可以使用NEW和OLD来分别表示更新前和更新后的记录。 3. 触发器的写法UPDATE触发器需要定义触发条件、更新语句以及日志记录等。在写UPDATE触发器时,我们可以使用INSERTED和DELETED特殊表来访问当前更新的记录以及更新前的记录。 例如,我们可以使用以下语句编写UPDATE触发器: CREATE TRIGGER update_trigger ON employees AFTER UPDATE AS BEGIN DECLARE @empid INT, @old_sal FLOAT, @new_sal FLOAT SELECT @empid = EmployeeID, @old_sal = Salary FROM DELETED SELECT @new_sal = Salary FROM INSERTED IF @new_sal <> @old_sal BEGIN INSERT INTO salary_changes(EmployeeID, OldSalary, NewSalary, ChangeDate) VALUES(@empid, @old_sal, @new_sal, GETDATE()) END END 在上面的例子中,我们定义了一个UPDATE触发器,当employees表中的Salary列更新时,触发器会向salary_changes表中插入相应的数据。通过使用DELETED和INSERTED特殊表,我们可以方便地获取更新前和更新后的Salary值,并进行相应的计算和判断。 总之,在编写SQL Server触发器时,我们需要按照规范编写触发器的创建语法,并且需要注意更新语句和数据访问的方式,以保证触发器的正确性和高效性。 ### 回答3: 在SQL Server中,触发器是一种存储过程,当数据表的内容被修改时,触发器会自动执行,帮助我们自动处理数据的变化。其中,update触发器是当表中的某条数据被更新时触发。 SQL Server中update触发器的写法如下: CREATE TRIGGER trigger_name ON table_name AFTER UPDATE AS BEGIN -- 触发器中的语句 END 其中,trigger_name为触发器名,table_name为要触发的表名,AFTER UPDATE表示在表中的某条记录被更新后触发此触发器。 在触发器中可以根据需要执行不同的语句,常见的有以下几种: 1. 获取被更新的数据 在触发器中可以使用“inserted”和“deleted”两个特殊的表,分别对应着更新前和更新后的数据。例如: SELECT * FROM inserted 可以获取更新后的数据。 2. 更新相关的表 在触发器中也可以执行更新操作,从而更新相关的表。例如: UPDATE other_table SET column_name = new_value WHERE condition; 3. 发送电子邮件或通知 在触发器中可以使用sp_send_dbmail存储过程发送邮件或使用RAISERROR函数抛出异常通知相关人员。 4. 记录数据变化 在触发器中可以使用INSERT、UPDATE或DELETE语句将数据变化记录到日志表中。 总之,SQL Server中的update触发器可以轻松实现数据的实时更新和部分业务功能自动化,提高了数据处理的效率。但是,在使用触发器时需要慎重考虑,避免触发器的逻辑错误导致数据不一致或系统故障。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值