如何使用存储过程将FK放入另一个表中

本文关键字:另一个 FK 何使用 存储过程 | 更新日期: 2023-09-27 18:08:03

我有一个登录表单:

Username: Ashish

Password: Pass

Contact no: 1234567890

State: Maharashtra

有两个表:

create table DGRegion
(DG_Regionno Int Identity (1,1) NOT Null constraint pk1 Primary Key,
 DG_Username varchar(50),
 DG_Password varchar(50), 
 DG_Contactno int ,
 DG_StateNo int References DGState(DG_stateno))

Create table DGState 
 (DG_stateno Int Identity (1,1) NOT Null constraint pk Primary Key ,
  DG_State varchar (50))

现在我如何创建一个存储过程p将值输入到DGRegionDGState表?

点击提交后,我正在使用asp.net。

问题是:我可以直接在DGRegion表中输入值,但如何在DGState表中输入状态引用?

如何使用存储过程将FK放入另一个表中

试试这样:

CREATE PROCEDURE dbo.EnterLoginData(@Username VARCHAR(50), @Password VARCHAR(50),
                                    @ContactNo INT, @StateName VARCHAR(50)) 
AS BEGIN 
   DECLARE @StateID INT
   -- check if state already exists
   IF EXISTS(SELECT * FROM dbo.DGState WHERE DG_State = @StateName)
      -- if it exists - retrieve the DG_StateNo
      SELECT @StateID = DG_StateNo
      FROM dbo.DGState 
      WHERE DG_State = @StateName
   ELSE BEGIN
      -- if it doesn't exists - insert new row 
      INSERT INTO dbo.DG_State(DG_State) VALUES(@StateName);
      -- get the newly inserted row's ID using SCOPE_IDENTITY()
      SELECT @StateID = SCOPE_IDENTITY()
   END
   INSERT INTO 
       dbo.DGRegion(DG_Username, DG_Password, DG_ContactID, DG_StateNo)
   VALUES(@Username, @Password, @ContactNo, @StateID)
END

  • 检查状态是否在状态表
  • 如果没有,将其放入状态表
  • 获取状态表id (DG_stateno),放入变量
  • 执行插入