背景: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'
请给我一些建议,非常感谢
答案 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;