SQL将数据插入表中有外键

时间:2014-05-22 15:00:41

标签: sql sql-server sql-insert

背景:SQL Server Mgmt Studio 2008 R2

DataTable: ProductID(PK, bigint), ProductNameID(FK, int), Price(Decimal)

ProductNameTable: ProductNameID(PK, int), ProductName(varchar)

所以我需要插入像" 123.4,AAA" (Price,ProductName)到DataTable但ProductNameID是FK,

我该怎么做? Bec ProductNameID是自动增量

这是我到目前为止的代码:

CREATE PROCEDURE DataInsertSP        
@Price DECIMAL(8, 2),    @ProductName VARCHAR(20)       
AS
BEGIN     

DECLARE @NewProductNameID INT    

INSERT INTO ProductNameTable(ProductName)    
VALUES (@ProductName)    

SELECT @NewProductNameID = SCOPE_IDENTITY()    

INSERT INTO DataTable(ProductNameID, Price)    
VALUES (@NewProductNameID, @Price);
END;

EXECUTE DataInsertSP 
@Price = 12.25        ,   @ProductName = 'Argo'

请给我一些建议,非常感谢

1 个答案:

答案 0 :(得分:0)

1如果产品名称已存在,我能想到的是什么?为此,您可以通过添加一点检查来略微改写此过程。像这样......

CREATE PROCEDURE DataInsertSP        
   @Price       DECIMAL(8, 2),    
   @ProductName VARCHAR(20)       
AS
BEGIN  
  SET NOCOUNT ON;   

  DECLARE @NewProductNameID BIGINT;    

SELECT @NewProductNameID = ProductID
FROM ProductNameTable
WHERE ProductName =  @ProductName

IF (@NewProductNameID IS NULL)
 BEGIN
     INSERT INTO ProductNameTable(ProductName)    
     VALUES (@ProductName)    
     SELECT @NewProductNameID = SCOPE_IDENTITY();
 END

 INSERT INTO DataTable(ProductNameID, Price)    
 VALUES (@NewProductNameID, @Price);

END;