`

实际项目自己写的一个主从表带事物存储过程

Go 
阅读更多
if exists(select * from dbo.sysobjects 
where id=object_id('contentCopyChannerId') and objectproperty(id,'isprocedure')=1)
drop procedure contentCopyChannerId
go

create proc contentCopyChannerId as

 declare @ID numeric
 declare @DETAILID numeric
 declare @USERID numeric
 declare @BASECHANNEL numeric
 declare @NEWBASECHANNEL numeric
 declare @TITLE varchar(300)
 declare @CREATETIME datetime
 declare @SOURCE varchar(100)
 declare @SOURCEURL varchar(100)
 declare @FINGER varchar(100)
 declare @AUTH_TYPE numeric
 declare @ATTACHMENT_COUNT numeric
 declare @COMMENT_COUNT numeric
 declare @HITS numeric
 declare @displaytime datetime
 declare @isdel numeric
 declare @titlePicture numeric
 declare @style varchar(20)
 declare @titlecolor varchar(50)
 declare @TOP char(1)
 declare @TOPTIME datetime
 declare @channel3g_Click int
 declare @isCopy varchar(50)
 declare @State int
 declare @newID numeric
 declare @CONTENT_CHANNEL_STATUS numeric
 declare @CONTENT_CHANNEL_CREATETIME datetime
 declare @CONTENT_CHANNEL_PUBLISHTIME datetime
 Set @State = 0
 declare @contentCursor cursor --内容
 declare @contentChannelCursor cursor --内容频道关系

Begin Tran
	set @contentCursor=cursor for
	select    top 2 [ID]
			, DETAILID
			, USERID
			,( case BASECHANNEL
			  when '100339' then '101133'
			  when '100340' then '101134'
			  when '100343' then '101117'
			  when '100317' then '100985'
			  when '100319' then '100985'
			  when '100661' then '100984'
			  when '100311' then '100986'
			  when '100316' then '100981'
			  when '101111' then '101004'
			  when '100315' then '100982'
			  when '101110' then '101006'
			  when '100318' then '100990'
			  when '100342' then '101123'
			  when '100312' then '101120'
			  when '100627' then '101122'
			  end) as NEWBASECHANNEL
			, BASECHANNEL
			, TITLE
			, CREATETIME
			, SOURCE
			, SOURCEURL
			, FINGER
			, AUTH_TYPE
			, ATTACHMENT_COUNT
			, COMMENT_COUNT
			, HITS
			, displaytime
			, isdel
			, titlePicture
			, style
			, titlecolor
			, [TOP]
			, TOPTIME
			, channel3g_Click
		from CONTENT 
		where BASECHANNEL in( 	--100339
					--,100340
					--,100343
					--,100317
					--,100319
					--,100661
					100311
					--,100316
					--,101111
					--,100315
					--,101110
					--,100318
					--,100342
					--,100312
					--,100627
				       ) and (isCopy is  null or isCopy='')
	open @contentCursor
	--如果没有任何行则直接退出
	If @@Cursor_Rows = 0
	Begin
	Close @contentCursor
	Deallocate @contentCursor
	End
	fetch next from @contentCursor into 
			  @ID
			, @DETAILID
			, @USERID
			, @NEWBASECHANNEL
			, @BASECHANNEL
			, @TITLE
			, @CREATETIME
			, @SOURCE
			, @SOURCEURL
			, @FINGER
			, @AUTH_TYPE
			, @ATTACHMENT_COUNT
			, @COMMENT_COUNT
			, @HITS
			, @displaytime
			, @isdel
			, @titlePicture
			, @style
			, @titlecolor
			, @TOP
			, @TOPTIME
			, @channel3g_Click
	while(@@fetch_status=0)
	begin
	set @isCopy=1
	insert into CONTENT(
				DETAILID
				, USERID
				, BASECHANNEL
				, TITLE
				, CREATETIME
				, SOURCE
				, SOURCEURL
				, FINGER
				, AUTH_TYPE
				, ATTACHMENT_COUNT
				, COMMENT_COUNT
				, HITS
				, displaytime
				, isdel
				, titlePicture
				, style
				, titlecolor
				, [TOP]
				, TOPTIME
				, channel3g_Click
				, isCopy
			   )
			values(
				 @DETAILID
				, @USERID
				, @NEWBASECHANNEL
				, @TITLE
				, @CREATETIME
				, @SOURCE
				, @SOURCEURL
				, @FINGER
				, @AUTH_TYPE
				, @ATTACHMENT_COUNT
				, @COMMENT_COUNT
				, @HITS
				, @displaytime
				, @isdel
				, @titlePicture
				, @style
				, @titlecolor
				, @TOP
				, @TOPTIME
				, @channel3g_Click
				, @isCopy
			      )
		Set @newID = @@Identity

		update CONTENT set isCopy='2'
		where (isCopy is  null or isCopy='') and ID=@ID
		
		set @contentChannelCursor=cursor for --内容频道关系结果集
			select  CREATETIME, PUBLISHTIME, STATUS
			from CONTENT_CHANNEL 
			where CHANNEL_ID=@BASECHANNEL
			and CONTENT_ID=@ID
		Open @contentChannelCursor
		--如果没有任何行则直接退出
		If @@Cursor_Rows = 0
		Begin
		Close @contentChannelCursor
		Deallocate @contentChannelCursor
		End
		fetch next from @contentChannelCursor into @CONTENT_CHANNEL_CREATETIME, @CONTENT_CHANNEL_PUBLISHTIME, @CONTENT_CHANNEL_STATUS
		Close @contentChannelCursor
		Deallocate @contentChannelCursor
		
		insert into CONTENT_CHANNEL(
						CONTENT_ID
						, CHANNEL_ID
						, CREATETIME
						, PUBLISHTIME
						, STATUS
						, isCopy
					   )values
					  (
						 @newID
						,@NEWBASECHANNEL
						,@CONTENT_CHANNEL_CREATETIME
						,@CONTENT_CHANNEL_PUBLISHTIME
						,@CONTENT_CHANNEL_STATUS
						,'1'
					  )

		update CONTENT_CHANNEL set isCopy='2' 
		where (isCopy is  null or isCopy='')
		and  CHANNEL_ID=@BASECHANNEL
		and CONTENT_ID=@ID

	If @@Error <> 0
	Begin
	Rollback Tran
	Close contentCursor
	Deallocate contentCursor
	Return -1
	End

	fetch next from @contentCursor into 
			  @ID
			, @DETAILID
			, @USERID
			, @NEWBASECHANNEL
			, @BASECHANNEL
			, @TITLE
			, @CREATETIME
			, @SOURCE
			, @SOURCEURL
			, @FINGER
			, @AUTH_TYPE
			, @ATTACHMENT_COUNT
			, @COMMENT_COUNT
			, @HITS
			, @displaytime
			, @isdel
			, @titlePicture
			, @style
			, @titlecolor
			, @TOP
			, @TOPTIME
			, @channel3g_Click
End
Close @contentCursor
Deallocate @contentCursor
Commit Tran

EXECUTE  contentCopyChannerId


 

分享到:
评论

相关推荐

    MySql主从配置实践过程记录

    在Windows下通过MySql提供的主从复制技术实现数据库主从同步机制,文档中详细记录我在项目中配置的实践过程

    读写分离时主从复制的数据延迟如何处理

    在数据库系统中,为了提高读取性能和增加冗余性,读写分离是一个常见的架构模式。在读写分离架构中,主数据库负责处理写操作,而从数据库(或称为辅助数据库)处理读操作。通常,从数据库通过数据复制技术与主数据库...

    MySQL主从复制 读写分离

    MySQL主从复制是一种数据同步机制,它允许将一个MySQL服务器(主服务器)上的数据自动复制到一个或多个其他MySQL服务器(从服务器)上。这种架构能够提供数据冗余、负载均衡以及提高应用程序的可用性。 - **日志...

    基于Mycat的Mysql主从复制读写分离配置详解与示例

    Mycat作为一个中间件,支持SQL92标准,能够跨语言、平台和数据库工作,尤其适合于大数据量的数据库架构。 首先,我们来了解读写分离的好处。简单来说,读写分离可以增加数据的冗余性(即备份数据),读和写操作分别...

    SpringBoot第 12 讲:SpringBoot+MySQL主从复制、读写分离

    主从复制是MySQL数据库的一种高可用性解决方案,其中一台服务器(主服务器)处理所有写操作,而其他服务器(从服务器)同步主服务器上的数据变化,从而形成一个读写分离的环境。这种设计模式有助于减轻主服务器的...

    mysql读写分离、主从同步

    MySQL主从同步是指通过复制机制将主服务器的数据变更同步到一个或多个从服务器的过程。这种方式可以用来实现数据备份、负载均衡等功能。 **同步过程:** 1. **二进制日志记录**:主服务器上的所有更改都会被记录在...

    MySQL主从复制项目实例

    这个项目实例将带你深入理解这一机制,并通过实际操作来熟悉整个配置过程。 首先,MySQL主从复制的核心原理在于,主库(Master)记录所有的数据变更操作到二进制日志(Binary Log),然后从库(Slave)通过IO线程从...

    MySQL主从复制与读写分离

    配置完成后,主库会生成一个初始同步点,如使用`CHANGE MASTER TO`命令指定。 4. **故障转移**: 如果主库出现故障,可以快速将从库提升为主库,保证服务连续性。这需要监控系统健康状况并有合适的切换策略。 5. **...

    MySQL主从同步配置过程.docx

    MySQL 主从同步配置过程 一、 MySQL 主从同步配置概述 MySQL 主从同步配置是指将 MySQL 数据库的数据从一台服务器(主服务器)同步到另一台服务器(从服务器)的过程。这种配置可以实现数据的高可用性和灾难恢复,...

    导出cxGrid主从表记录

    在IT领域,特别是数据库应用和用户界面开发中,cxGrid是一个常见的组件库,它用于创建具有强大数据处理能力的网格控件。cxGrid允许开发者在应用程序中构建主从表结构,这种结构通常用于显示和操作多层关联的数据。在...

    简单学习主从表

    主从表关系指的是一个主表(Master Table)与一个或多个从表(Slave Table)之间的关联。主表通常包含唯一标识记录的关键字段,而从表则通过这些关键字段与主表相关联,以扩展或细化主表中的信息。这种关系在关系型...

    mysql主从备份和dz读写分离

    其核心理念在于将主服务器(Master)的事务操作实时或定期复制到一个或多个从服务器(Slave),从而实现数据的冗余存储与分发。 ##### 重要性: 1. **备份便利性**:通过主从备份机制,可在不影响主服务器正常运行...

    MySQL主从复制与读写分离.docx

    MySQL 主从复制是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器中,以实现数据的高可用性和读写分离。下面是 MySQL 主从复制与读写分离的详细知识点: MySQL 主从复制 MySQL 主从复制是指将一个 ...

    mycat在mysql主从复制基础上实现读写分离

    综上所述,Mycat在实现MySQL主从复制基础上的读写分离功能是一个复杂但有效的过程,涉及到了对系统环境的配置、JDK的安装、Mycat的部署以及详细的配置文件修改等多个步骤。在部署实施时,需要根据实际的业务需求和...

    WP7主从视图示例源码2012615

    在实际开发中,经常会使用到主从的显示,当选中一个父项,则子项的集合自动进行修改, 我们可以使用传统的SelectedIndexChanged修改去实现,但是通常情况下借助于collectionViewSource类更方便的来实现。 一共创建了...

    Redis主从复制以及主从复制技术原理.docx

    且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。 面临的问题 在实际的场景当中单一节点的 redis 容易面临风险,存在以下几个问题: 1. 机器故障:当发生机器故障时,需要迁移到另外...

    突破Java面试(50)-MySQL读写分离及主从同步延时解决方案.docx

    - **半同步复制(semi-sync):** 主数据库在将更改写入binlog之后,会等待至少一个从数据库确认接收并存储了这些更改后,才视为写操作完成。 - **并行复制:** 从数据库开启多个线程,分别处理不同的数据库或表,以...

    mysql主从搭建过程

    mysql主从搭建过程

    使用Spring实现读写分离(MySQL实现主从复制)

    3. **DataSourceAspect类**:定义一个AOP切面,在进入业务逻辑方法前根据方法名前缀判断应使用读库还是写库,并在方法执行完毕后清除线程中的数据源标识。 ### 结论与展望 通过上述步骤,我们可以有效地在Spring...

    Python-MongoMultiMaster一个帮助你搭建MongoDB主从复制的工具

    MongoMultiMaster是一个基于Python编写的工具,专门用于简化MongoDB主从复制(也称为分片集群)的配置过程。在大型分布式系统中,数据的可靠性和可用性是至关重要的,而MongoDB的主从复制机制正好能提供这样的功能。...

Global site tag (gtag.js) - Google Analytics