NopCommerce上二次开发 触发器记录
最近要在NopCommerce上二次开发。
开发也就算了,该项目的架构设计很好,但性能不可谓不低。
扯远了,为了保持项目以后升级顺利,开次开发不允许在原项目基础上大改,只能以插件形式开发……
因一个功能,不好改代码,所以在数据层用触发器实现。代码记录在此
USE [NopCommerce]
GO
/****** Object: Trigger [dbo].[InsertAffiliate] Script Date: 2014/7/22 11:10:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author: 崔大鹏
-- Create date: 2014.7.21
-- Description: <Description,,> 需要去affiate 的外键关联
-- =============================================
ALTER TRIGGER [dbo].[InsertAffiliate]
ON [dbo].[Customer]
AFTER INSERT,UPDATE
AS BEGIN declare @CustomUserName nvarchar(1000)
select @CustomUserName=inserted.Username from inserted
If (@CustomUserName is not null)
begin
-- print('用户名不为空(实注册用户,临时用户不进)
Declare @CustomId int
declare @errno int
DECLARE @AddressId int
DECLARE @AffiliateId int DECLARE @User_FirstName nvarchar(100)
DECLARE @User_LastName nvarchar(100)
DECLARE @Company nvarchar(100) select @CustomId=inserted.Id from inserted -- print('不存在关联AFF)
if not exists(select 1 from P_CustomId_AffiliateId P WHERE P.Id=@CustomId)
BEGIN Begin TransAction select @AddressId from CustomerAddresses as Ca WHERE CA.Customer_Id=@CustomId
-- print('关联CustomerAddresses 表 查出addressge表的ID -- print('如果没查到,插入一条。ADDRESS 并插入一条关联。
if(@AddressId is null)
begin --with sr as( select * from GenericAttribute with nolock
-- where EntityId=@CustomId and KeyGroup='Customer'
-- )
--select @User_FirstName=Value from sr
--where sr.[Key]='FirstName' --select @User_LastName=Value from sr with sr as(select case [Key] when 'FirstName' THEN VALUE END AS 'FirstName',case [Key] when 'LastName' THEN VALUE END AS 'LastName', case [Key] when 'Company' THEN VALUE END AS 'Company'
FROM [NopCommerce].[dbo].[GenericAttribute]
where [EntityId]=@CustomId) select @User_FirstName=STUFF((SELECT ',' + FirstName
FROM sr AS G2 FOR XML PATH('')), 1, 1, '') ,@User_LastName=STUFF((SELECT ',' + LastName
FROM sr AS G2 FOR XML PATH('')), 1, 1, ''),@Company= STUFF((SELECT ',' + Company
FROM sr AS G2 FOR XML PATH('')), 1, 1, '') INSERT INTO [dbo].[Address]
([FirstName]
,[LastName]
,[Email]
,[Company]
,[CountryId]
,[StateProvinceId]
,[City]
,[Address1]
,[Address2]
,[ZipPostalCode]
,[PhoneNumber]
,[FaxNumber]
,[CreatedOnUtc])
VALUES
(@User_FirstName
,@User_LastName
,@CustomUserName
,@Company
,NULL
,NULL
,''
,''
,''
,''
,''
,''
,GETDATE())
SELECT @AddressId=@@IDENTITY set @errno=@errno+@@error INSERT INTO [dbo].[CustomerAddresses]
([Customer_Id]
,[Address_Id])
VALUES
(@CustomId
,@AddressId)
set @errno=@errno+@@error
end -- print('插入Affiliate 以上对ADDRESS表的处理,因为,AFF表有外键关联,ADDRESS无数据,不能INSERT
insert into Affiliate ([AddressId]
,[Deleted]
,[Active])
values(@AddressId,0,1)
SELECT @AffiliateId=@@IDENTITY set @errno=@errno+@@error
-- print('插入P_CustomId_AffiliateId
insert into P_CustomId_AffiliateId
values(@CustomId,@AffiliateId) set @errno=@errno+@@error
If @errno>0
begin
-- print('事务处理失败,回滚事务!')
rollback TransAction
end
Else
Begin
-- print('事务处理成功,提交事务!')
Commit TransAction
End -- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here end END END
NopCommerce上二次开发 触发器记录的更多相关文章
- E8.Net 工作流二次开发架构平台
一. 产品简介 E8.Net工作流开发架构是基于微软.Net技术架构的工作流中间件产品,是国内商业流程管理(BPM)领域在.Net平台上的领先产品,是快速搭建流程管理解决方案的二次开 ...
- jeecms系统使用介绍——通过二次开发实现对word、pdf、txt等上传附件的全文检索
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76912307 本文出自[我是干勾鱼的博客] 之前在文章<基于Java的门户 ...
- Dokuwiki 二次开发记录
Dokuwiki 二次开发记录 [转]http://www.syyong.com/other/Dokuwiki-Secondary-Development-Record.html DokuWiki 是 ...
- 踏上Revit二次开发之路 0 序
0 序 近来,由于工作上的需要,开始自学Revit二次开发. Revit由欧特克公司专为BIM构建,是建筑业体系中使用最广泛的软件之一.借助欧特克公司在我国市场占有率方面的绝对优势,甚至给不少人带来& ...
- OBS-Studio二次开发记录
OBS-Studio 是一款跨平台的,开源的视频直播客户端软件. 公司需要对他进行二次开发,开发的目的是使用它的录屏功能. 开发的要求是:定制全新的界面,所见即所得,window系统兼容要好. 开发步 ...
- Nopcommerce 二次开发0
Nopcommerce 是国外的一个高质量的开源b2c网站系统,基于EntityFramework6.0和MVC5.0,使用Razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现的 ...
- ArcEngine二次开发,TOCControl控件上使用contextMenuStrip
右键菜单,在二次开发中很实用,以前没用过,最近通过一本书了解到,一直想找这么一个控件来用. 一般的控件,将contextMenuStrip控件拖到所依托的控件上,然后输入自己想要的几个功能. 在所依 ...
- [PC]PHPCMS二次开发指南(上)
------------------------------------------------------------------------------------- PHPCMS本身功能已经很完 ...
- 采用Qt快速绘制多条曲线(折线),跟随鼠标动态显示线上点的值(基于Qt的开源绘图控件QCustomPlot进行二次开发)
QCustomPlot是一个开源的基于Qt的第三方绘图库,能够绘制漂亮的2D图形. QCustomPlot的官方网址:https://www.qcustomplot.com/ 从官网下载QCustom ...
随机推荐
- 吴裕雄--天生自然 PYTHON3开发学习:基本数据类型
#!/usr/bin/python3 counter = 100 # 整型变量 miles = 1000.0 # 浮点型变量 name = "runoob" # 字符串 print ...
- 01 语言基础+高级:1-6 集合_day02【Collection、泛型】
day02[Collection.泛型] 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 能够说出集合与数组的区别 说出Collection集合的常用功能 能够使用迭代器对集合 ...
- Properties in Algebra
附录-Properties in Algebra 部分证明转载自标注,仅作个人整理查阅用. 范数 (norm) \(^{[1]}\) 要更好的理解范数,就要从函数.几何与矩阵的角度去理解,我尽量讲的通 ...
- flask框架-大结局
flask-script 用于实现类似于django中 python3 manage.py runserver ...类似的命令. 安装 pip3 install flask-script 使用: f ...
- 92.QuerySet API中的切片操作详细使用
切片操作: 使用情况分析:在我们的CSDN的个人主页会显示我们个人发布的多篇文章(20篇),如果还想查看更多,就可以点击最下方的"查看更多"按钮,在这里对首页的文章的个数的限制就用 ...
- Kafka、RabbitMQ、RocketMQ等消息中间件的介绍和对比
本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html 前言 在分布式系统中,我们广泛运用消息中间件进 ...
- iOS开发-消息初认识
一.消息循环(runLoop)的作用 1,防止程序退出, 2,接受事件 3,如果没有事件,让程序自动休眠 二.消息源 1, 输入源:键盘.鼠标.NSBoard.NSPort 2,定时源 ...
- 有关iOS热更新
iOS热更新的几篇文章,看完这几篇,自己集成一下.下面说一下我集成时遇到的问题. 这是原作者的JSPatch的讲解的文章:<JSPatch – 动态更新iOS APP>.<JSPat ...
- 14 微服务电商【黑马乐优商城】:day06-使用nginx反向代理并掌握cors解决跨域
本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...
- Nuxt.js学习(二) --- Nuxt目录结构详解、Nuxt常用配置项、Nuxt路由配置和参数传递
[TOC] 1.Nuxt目录结构详解 Nuxt项目文件目录结构 |-- .nuxt // Nuxt自动生成,临时的用于编辑的文件,build |-- assets // 用于组织未编译的静态资源入LE ...