建立触发器后,不能像表中插入数据,是什么原因

建立触发器后,不能像表中插入数据,是什么原

USE [cai2016]
GO
/****** Object:  Trigger [dbo].[trigger_yunum]    Script Date: 2017/3/29 17:30:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter trigger [dbo].[trigger_yunum]
  on [dbo].[newmoo_case_cgxd]
   for  insert
  as
    BEGIN

DECLARE @id bigint SELECT @id = id FROM INSERTED
    DECLARE @purchase_id varchar SELECT @purchase_id = purchase_id FROM INSERTED
    DECLARE @slength nvarchar SELECT @slength = slength FROM INSERTED
    DECLARE @engname nvarchar SELECT @engname = engname FROM INSERTED

DECLARE @swidth nvarchar SELECT @swidth = swidth FROM INSERTED
    DECLARE @kehu_id bigint SELECT @kehu_id = kehu_id FROM INSERTED
    DECLARE @caseid bigint select @caseid =caseid FROM INSERTED
    DECLARE @productnum int SELECT @productnum = productnum FROM INSERTED
    DECLARE @pay numeric SELECT @pay = pay FROM INSERTED
    DECLARE @costprice numeric SELECT @costprice = costprice FROM INSERTED

DECLARE @pid_p bigint select @pid_p =pid_p FROM INSERTED
    DECLARE @cz int SELECT @cz = cz FROM INSERTED
    DECLARE @productRemarks nvarchar SELECT @productremarks = productremarks FROM INSERTED
    DECLARE @weight numeric SELECT @weight = weight FROM INSERTED
    
    Update  a set a.overnum=(select a.id, a.overnum, a.oknum, a.yunum, b.caseid, b.productnum, b.ischeck, sum(b.productnum)  from newmoo_case a, newmoo_case_cgxd b where b.caseid=a.id and b.ischeck=3)

end

use test
go
-- 表1(id,productnum),建立几个测试数据
if object_id(‘表1‘) is null
begin
  create table 表1(id int,productnum numeric(10,2))
  insert into 表1
  select 1001,10.5 union all
  select 1001,20.5 union all
  select 1001,30.5 union all
  select 1001,30.5 union all
  select 1002,20.2 union all
  select 1002,30.2
end
-- select * from 表1

-- 表2(id,overnum,upd),建立几个测试数据,汇总表
if object_id(‘表2‘) is null
begin
  create table 表2(id int,overnum numeric(10,2),upd datetime )
  insert into 表2
  select 1001,0.0,getdate() union all
  select 1002,0.0,getdate()
end
-- select * from 表2
go

-- 上面的是测试数据,下面开始建立 触发器

alter trigger [dbo].[tr_表1] --第1次运行时,create,
on [dbo].[表1]
for insert
as
begin
  declare @id int
  select @id=id from inserted

update a set a.overnum=b.productnum,upd=getdate() 
  from 表2 a,(select id,productnum=sum(productnum) from 表1 where [email protected] group by id) b
  where a.id=b.id
end

go

-- 测试往“表1”插入数据,看表2是否更新,查看前后变化
select * from 表2
go
insert into 表1(id,productnum) values(1002,30.5)
select * from 表2

时间: 2024-09-30 05:43:17

建立触发器后,不能像表中插入数据,是什么原因的相关文章

第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform)让用户方便的操作数据库中的数据. 什么是ADO.NET 是一组库类,System.Data. Ado.net组成 Connection:用来连接数据库 Command:用来执行SQL语句 DataReader:只读.只进的结果集,一条一条读取数据(SteamReader.XmlReader) Da

Hive通过查询语句向表中插入数据过程中发现的坑

前言 最近在学习使用Hive(版本0.13.1)的过程中,发现了一些坑,它们或许是Hive提倡的比关系数据库更加自由的体现(同时引来一些问题),或许是一些bug.总而言之,这些都需要使用Hive的开发人员额外注意.本文旨在列举我发现的2个通过查询语句向表中插入数据过程中的问题,希望大家注意. 数据准备 为了验证接下来出现的问题,需要先准备两张表employees和staged_employees,并准备好测试数据.首先使用以下语句创建表employees: create table employ

SQL Server 向堆表中插入数据的过程

堆表中  IAM 记录着的数据页,表的各个数据页之间没有联系.也就是说一个页面它不会知道自己的前一页是谁,也不知道自己的后一页是谁. 插入数据时先找到IAM页,再由pfs(page free space)决定插入到哪里!

2014.11.26 向MySQL数据表中插入数据时,显示“syntax error”时应检查

插入语句: "insert into tablename (a,b,c,d) values(1,2,3,4)" 插入结果: a b c d 1 2 3 4 有误时,请检查: 1.名值对有没有写错: 2.代码的字符串处理有没有问题: 3.代码中的列名和表中的列名是不是一一对应的: 4.定义的列名是否跟SQL语句中的关键字重复,例如dec等.

SQL Server批量向表中插入多行数据语句

因自己学习测试需要,需要两个有大量不重复行的表,表中行数越多越好.手动编写SQL语句,通过循环,批量向表中插入数据,考虑到避免一致问题,设置奇偶行不同.个人水平有限,如有错误,还望指正. 语句如下: 1 --批量向表中插入大量数据语句(奇偶不同) 2 3 --判断测试表是否存在,存在则先删除再创建 4 if exists(select 1 from sysobjects where xtype='u' and name='table_test' ) 5 drop table table_test

MSSQL之三 在表中操纵数据

创建了数据库和表之后,下一步是在数据库中存储数据.作为一个数据库开发人员,你将需要修改或删除数据.你可以通过使用Transact-SQL的数据操纵语言(DML)语句来完成这些数据操纵. 本章讨论如何使用DML语句来操纵表中的数据. 重点 ?      插入数据 ?      更新数据 ?      删除表中数据 预习功课 ?        插入部分数据 ?        批量插入数据 ?        在表中更新数据 ?        从表中删除数据 使用DML语句操纵数据 在表中存储数据 表创

向视图中插入数据的 注意事项

视图除了进行查询记录外,也可以利用视图进行插入.更新.删除记录的操作,减少对基表中信息的直接操作,提高了数据的安全性. 在视图上使用INSERT语句添加数据时,要符合以下规则. (1)使用INSERT语句向数据表中插入数据时,用户必须有插入数据的权利. (2)由于视图只引用表中的部分字段,所以通过视图插入数据时只能明确指定视图中引用的字段的取值.而那些表中并未引用的字段,必          须知道在没有指定取值的情况下如何填充数据,因此视图中未引用的字段必须具备下列条件之一.        

MySQL触发器初试:当A表插入新记录,自动在B表中插入相同ID的记录

今天第一次用MySQL的触发器,怕忘了,赶紧写篇博客记录一下. 废话不说,先上语法: 1 CREATE TRIGGER trigger_name 2 { BEFORE | AFTER } { INSERT | UPDATE | DELETE } 3 ON tbl_name 4 FOR EACH ROW 5 trigger_body 事情的起因是这样的:我有一个人员信息表 pers.因为字段很多,就把中文字段单出来,另建了一个表 perscn.我希望当 pers 插入一条记录,perscn 也能自

使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MySQL Workbench建立数据库,建立新的表,为表添加数据. 点击上图中的“加号”图标,新建一个连接, 如上图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击“OK”,连接就建立好了,建立完成后,会出现一个长方形的框框,双击它,出现下图所示页面 点击图中的红圈里的按钮,新建一个Schema,即数据库(个人理解..),修改一下Name 的值,如  mydat