【发布时间】:2013-05-09 07:15:20
【问题描述】:
我有两张学生桌(使用 Microsoft SQL Server 2008 R2 标准版)。我需要编写一个程序,这样如果第一个表有新学生,第二个表也会更新
这不起作用,我不知道为什么:
CREATE PROCEDURE [dbo].[CHECK_NEW]
AS
begin transaction
declare @tempId int
declare @tempName varchar
DECLARE c1 CURSOR FOR
SELECT kId, kName
FROM table1
OPEN c1
FETCH NEXT FROM c1
INTO @tempId, @tempName
WHILE @@FETCH_STATUS = 0
BEGIN
if (SELECT sId FROM table2) NOT IN(@tempId)
insert into table(sId, name) values(@tempId, @tempName)
END
commit
提前致谢
【问题讨论】:
-
“这不起作用” - 不是一个有用的描述。顺便说一句,您不需要使用光标...
-
@MitchWheat 我没有什么要补充的,程序编译时没有错误但是第二个表在我执行时没有更新,我不知道为什么
-
你为什么要扫描整个表格?为什么不添加触发器(有其自身的问题)或从代码插入 -> 只保留一个添加到表 1 的位置,然后启动一个 txn 并执行此操作。否则,如果您在负载下有更多的 TPS(每秒 Txns),您可能会遇到 db 过度工作的情况
-
@marc_s 抱歉,Microsoft SQL Server
-
OK - 什么版本? 7.0? 2000? 2005 年? 2008 年? 2008 R2? 2012 年?哪个版本:标准?网络?企业?快递?
标签: sql stored-procedures insert sql-server-2008-r2 cursor