我的表格包含RowId
列,PersonId
,ActivityTypeId
,GroupId
,我选择了上面的列,但效果很好。
以上表格数据
以上数据可以包含类似数据,相同的`PersonId
可以包含多个activityTypeId
,而activityTypeId可以包含GroupId
。像这样的东西
RowId PersonId ActivityTypeId GroupId
1 20 1 2
2 20 2 2
3 20 7 8
现在我的问题是,如果对于特定的PersonId
,同一组中有超过3个条目。我希望在选择并手动添加新人时删除该人的所有条目。这可以在商店程序中完成吗?
任何帮助将不胜感激。
道歉,如果Title没有意义。
答案 0 :(得分:1)
由于您要对不同的表进行多次调用,因此存储过程将是最佳选择。
要清楚,您是尝试根据特定PersonID
删除所有条目,然后从SELECT
语句中添加一个条目?可以使用以下语法完成:
CREATE PROC my_sp
@deletedID int, -- This is the ID of the person you are trying to delete
@insertedID int -- This is the ID of the person you are trying to add
AS
BEGIN
SET NOCOUNT ON -- This will ensure your select statement is not interefered
DELETE FROM Table WHERE PersonID = @deletedID
INSERT INTO Table
SELECT *
FROM Table2
WHERE PersonID = @insertedID
END
要调用此存储过程,只需使用带参数的EXECUTE
语句:
EXEC my_sp 0123, 5555
其中0123是已删除人员的ID,5555是已添加的人员。
如果您想手动将数据传递到INSERT INTO
而不是使用SELECT
语句,那么您必须添加更多参数并使用
INSERT INTO Table
VALUES(@param1, @param2, @param3, ... etc)
以下是使用INSERT INTO
的链接,这也可能有所帮助:http://www.w3schools.com/sql/sql_insert.asp