sql - 已经插入的数据替换到另一个 UserId
问题描述
在我的业务单元表中,FK 是 UserId
例如:UserId = 001,BusinessUnit = 班加罗尔
例如:UserId = 001,BusinessUnit = Hyd ....
现在,我需要 UserId = 002 不同我想在 002 中创建相同的数据
INSERT INTO UserBUMapping (userId, BUId,PracticeAreaId)
SELECT UserId = 60338, BUID, PRACTICEAREAID FROM UserBUMapping WHERE UserId = 50326
insert into UserAccess
SELECT MODULEID,60338, READACCESS, WRITEACCESS, UPDATEACCESS, DELETEACCESS,APPROVALACCESS
FROM USERACCESS WHERE USERID = 50326
INSERT 语句与 FOREIGN KEY 约束“FK_UserAccess_UserDetails”冲突。
冲突发生在数据库“DataBase Name”、表“dbo.UserDetails”、列“UserId”中。
CREATE PROCEDURE [dbo].[USP_CLONE_USER]
(
@CLONE_FROM BIGINT,
@F_NAME VARCHAR(50),
@L_NAME VARCHAR(50),
@EMAIL VARCHAR(50),
@ENC_EMAIL VARCHAR(200),
@ENC_PASSWORD VARCHAR(200) ,
@DATE_OF_JOINING DATETIME
)
AS
BEGIN
--INSERTING VALUES INTO USERDETAILS TABLE
INSERT INTO USERDETAILS (Username, FirstName, LastName, Email, Password, CustomerId, UserStatusId,
TimeSheetApplicable, DefaultBUId, DesignationId, CreatedDate, UniqueId, ReportingPartnerId, ReportingPartnerId2,
Version2Access, StopeVersion1Access,DateOfJoining)
SELECT @ENC_EMAIL, @F_NAME, @L_NAME, @EMAIL, @ENC_PASSWORD, CustomerId, UserStatusId,
ISNULL(TimeSheetApplicable, 0), DefaultBUId, DesignationId, GETDATE(), NEWID(), ReportingPartnerId, ReportingPartnerId2,
Version2Access, StopeVersion1Access,@DATE_OF_JOINING
FROM USERDETAILS WHERE UserId = @CLONE_FROM
DECLARE @NEW_USER_ID BIGINT
SET @NEW_USER_ID = @@IDENTITY
--2. SELECT THE BUSINESS UNIT'S OF USER WHOSE BUSINESS UNIT'S NEEDS TO BE COPIED AND INSERT THE SAME.
INSERT INTO UserBUMapping
SELECT @NEW_USER_ID, BUID, PRACTICEAREAID FROM UserBUMapping WHERE UserId = @CLONE_FROM
--2. SELECT THE ACCESS RIGHTS OF USER WHOSE ACCESS RIGHTS NEEDS TO BE COPIED AND INSERT THE SAME.
INSERT INTO UserAccess
SELECT MODULEID, @NEW_USER_ID, READACCESS, WRITEACCESS, UPDATEACCESS, DELETEACCESS,APPROVALACCESS
FROM USERACCESS WHERE USERID = @CLONE_FROM
END
GO
解决方案
create PROCEDURE [dbo].[USP_CLONE_USER]
(
@CLONE_FROM BIGINT,
@F_NAME VARCHAR(50),
@L_NAME VARCHAR(50),
@EMAIL VARCHAR(50),
@ENC_EMAIL VARCHAR(200),
@ENC_PASSWORD VARCHAR(200) ,
@DATE_OF_JOINING DATETIME
)
AS
BEGIN
--INSERTING VALUES INTO USERDETAILS TABLE
INSERT INTO USERDETAILS (Username, FirstName, LastName, Email, Password, CustomerId,
DesignationId, CreatedDate, UniqueId, ReportingPartnerId, DateOfJoining)
SELECT @ENC_EMAIL, @F_NAME, @L_NAME, @EMAIL, @ENC_PASSWORD, CustomerId,
DesignationId, GETDATE(), NEWID(), ReportingPartnerId, ReportingPartnerId2,
Version2Access, StopeVersion1Access,@DATE_OF_JOINING,IsExempted
FROM USERDETAILS WHERE UserId = @CLONE_FROM
DECLARE @NEW_USER_ID BIGINT
SET @NEW_USER_ID = ***IDENT_CURRENT('UserDetails')***
--2. SELECT THE BUSINESS UNIT'S OF USER WHOSE BUSINESS UNIT'S NEEDS TO BE COPIED AND INSERT THE SAME.
INSERT INTO UserBUMapping (UserId,BUId,PracticeAreaId)
SELECT @NEW_USER_ID, BUID, PRACTICEAREAID FROM UserBUMapping WHERE UserId = @CLONE_FROM
--2. SELECT THE ACCESS RIGHTS OF USER WHOSE ACCESS RIGHTS NEEDS TO BE COPIED AND INSERT THE SAME.
INSERT INTO UserAccess (MODULEID, UserId, READACCESS)
SELECT MODULEID, @NEW_USER_ID, READACCESS,
FROM USERACCESS WHERE USERID = @CLONE_FROM
END
GO
推荐阅读
- javascript - 导航问题 - 无法对未安装的组件执行 React 状态更新
- python - 如何在嵌套的 URL 抓取中传递单个链接?
- read-the-docs - 编号列表中的代码块弄乱了编号 python-markdown/mkdocs
- c++ - 纹理不适用于我在 C++ 和 OpenGL 中的立方体
- c - 如何创建现有 FatFs 分区的备份副本?
- r - 对于运行 R 3.6.0 的 Windows 10,Rstudio 1.2.1335 中的 R grep() 函数存在问题
- laravel - Laravel - 仅搜索用户 id 帖子
- node.js - 在 Node.js 中,使用 `{shell: true}` 生成一个进程,然后与实际进程而不是 shell 进行通信
- arcgis - ArcGIS RuntimeError:未登录门户
- amazon-web-services - React Native:将视频发送到 S3 时压缩视频