【发布时间】:2016-05-27 15:12:16
【问题描述】:
我有一个问题。我有一个数据库表,其中包含名称和 ID 作为列。该表中有 22 行包含信息。
现在,我得到这些数据并在 UI 上显示。用户可以添加新行,删除任何行并保存表格。
一旦用户点击保存,我希望整个表格替换已经存在的表格。这是通过存储过程执行的。
首先删除整个数据库表并保存新条目。
但是有时会发生这样的情况,如果我添加 3-4 行并保存它,数据库会被删除,但 22 行的新行 + 新添加的 3 行不会在表中更新。
谁能告诉我更换桌子的简单方法?
PS。表中没有唯一的 id。所以我无法更新行。我只需要删除整个内容并保存新的表格行。
存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [DATABASE1].[sp_usertable]
(@in_params AS XML)
AS
BEGIN
DELETE FROM dbo.usertable;
SELECT
T.x.value('./Name[1]','varchar(25)') as [Name] ,
T.x.value('./ID[1]','varchar(6)') as [ID] ,
INTO
#Temp
FROM
@in_params.nodes('/ArrayOfData/Data') as T(x);
BEGIN TRANSACTION
INSERT INTO [dbo].[usertable] (Name, ID)
SELECT Name, ID
FROM #Temp T
COMMIT TRANSACTION
DROP TABLE #Temp;
END
【问题讨论】:
-
这是 microsoft sql server 还是 mysql?
-
@JeffPuckettII- microsoft sql server。
-
@patrick 你删除整个表的原因是什么?为什么现在在表中插入/更新/删除行
-
@I can't insert bcos 它只会添加当前表的副本。不能使用更新 bcoz 这里没有唯一的列。 tats y 删除并保存整个内容
-
把存储过程代码放在这里给我们看看会有帮助。
标签: sql-server database stored-procedures