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 ...
随机推荐
- 14 微服务电商【黑马乐优商城】:day01-springboot(理论篇)
本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) :day01-springboot(Thyme ...
- poj2778 矩阵乘法+ac自动机
题:http://poj.org/problem?id=2778 题意:给定m个模式串,问长度为n的字符串不包含这些模式串的有几种可能 分析:因为n很大,所以考虑矩阵ksm来解决,构造一个矩阵res[ ...
- UML-如何进行对象设计?
之前的章节,学过了OOA,以及交互图+类图.本章主要讲述OOD.OOD就是面向对象设计,那如何进行对象设计? 概览 1.输入制品 注:这些制品并非都必要. 2.活动 1).针对输入的制品,采用什么样的 ...
- UML-逻辑架构和包图-概述
回顾前几章学习了用例模型,本章开始学习设计模型.
- 【网易官方】极客战记(codecombat)攻略-森林-流星雨star-shower
流星雨不仅是一个了不起的现象,而且是获得一些钱的好机会. 简介 流星雨正在下着你的宝石和硬币! 但星形金属不是很长寿,硬币很快就消失了. 宝石不会消失. 使用或语句提取密切的金币或宝石: if ite ...
- java使用ZipOutputStream批量压缩文件,并将文件分别放置不同文件夹压缩
package cn.cnnho.backstage.controller;import java.util.ArrayList; import java.util.List; import java ...
- JavaSE--【转】网络安全之证书、密钥、密钥库等名词解释
转载 http://www.cnblogs.com/alanfang/p/5600449.html 那些证书相关的名词解释(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等 ...
- 大言不惭 swank? talk about sth or speak too confidently cán,意思是指说大话而毫不感到难为情。出自《论语·宪问》:“子曰:‘其言之不怍,则为之也难。’”宋·朱熹注:“大言不惭,则无必为之志,而不自度其能否也。欲践其言,其不难哉!” 是不是类似于 swank?
大言不惭 swank? talk about sth or speak too confidently cán,意思是指说大话而毫不感到难为情.出自<论语·宪问>:“子曰:‘其言之不怍,则 ...
- tomcat高并发配置
最近在项目中负责Tomcat高并发优化方案写一写新得. 优化1)tomcat默认的并发是75,可以启用线程池根据生产环境硬件设定线程池大小. <Executor name="tomca ...
- 使用tomcat方式实现websocket即时通讯服务端讲解
使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的ja ...