Как говорится в заголовке. Когда я вызываю метод UPDATE
в mysql, он обновляет ячейку. Но создает новую строку со старыми данными.MYSQL UPDATE создает новую запись
Вот хранимая процедура Im с помощью:
Procedure [dbo].[Insert_Invoice_And_Insert_Address]
@UserID int,
@Occasion nvarchar(50),
@FlowerName nvarchar(50),
@FirstName nvarchar(50),
@LastName nvarchar(50),
@StreetAddress nvarchar(50),
@Suite nvarchar(50),
@City nvarchar(50),
@Country nvarchar(50),
@Province nvarchar(50),
@PostalCode nvarchar(50)
as
DECLARE @TaxCode money
DECLARE @InvoiceID int
DECLARE @FlowerID int
DECLARE @AddressID int
DECLARE @CountryID int
DECLARE @ProvinceID int
SET @TaxCode = (SELECT [TaxRate]
FROM [Flowers].[dbo].[TaxCode]
where [Status] like 1)
SELECT @TaxCode;
SET @CountryID = (SELECT [CountryID]
FROM [Flowers].[dbo].[Country]
WHERE [DisplayValue] like @Country)
SELECT @CountryID
SET @ProvinceID = (SELECT [ProvinceID]
FROM [Flowers].[dbo].[Province]
WHERE [Name] Like @Province)
SELECT @ProvinceID
SET @FlowerID = (SELECT [FlowerID]
FROM [Flowers].[dbo].[Flowers]
where [Description] like @FlowerName)
SELECT @FlowerID;
IF @FlowerID in (SELECT [Flower]
FROM [Flowers].[dbo].[InvoiceDetails]
WHERE [Processed] = 0 and [InvoiceID] = (SELECT [InvoiceID]
FROM [Flowers].[dbo].[Invoices]
WHERE [UserID] = @UserID and [Processed] = 0)) BEGIN
SET @InvoiceID = (SELECT [InvoiceID]
FROM [Flowers].[dbo].[Invoices]
where [UserID] like @UserID and [Processed] like 0);
SELECT @InvoiceID;
UPDATE [Flowers].[dbo].[InvoiceDetails]
SET [ItemNumber] = [ItemNumber] + 1
WHERE InvoiceID like @InvoiceID and [Processed] like 0 and Flower like @FlowerID;
END
ELSE
INSERT INTO [Flowers].[dbo].[Invoices]
([UserID]
,[TaxCode]
,[Processed]
)
VALUES
(@UserID
,@TaxCode
,0
)
INSERT INTO [Flowers].[dbo].[Addresses]
([Street]
,[apt]
,[City]
,[Province]
,[Country]
,[PostalCode]
)
VALUES
(@StreetAddress
,@Suite
,@City
,@ProvinceID
,@CountryID
,@PostalCode
)
SET @AddressID = (SELECT [AddressID]
FROM [Flowers].[dbo].[Addresses]
where [PostalCode] like @PostalCode and [Street] like @StreetAddress)
SELECT @AddressID;
SET @InvoiceID = (SELECT [InvoiceID]
FROM [Flowers].[dbo].[Invoices]
where [UserID] like @UserID and [Processed] like 0);
SELECT @InvoiceID;
INSERT INTO [Flowers].[dbo].[InvoiceDetails]
([ItemNumber]
,[Flower]
,[Processed]
,[DeliveryAddress]
,[InvoiceID]
)
VALUES
(1
,@FlowerID
,0
,@AddressID
,@InvoiceID
)
Что используется для является страница заказа. и для того, чтобы добавить больше количества в свою корзину, вы в конечном итоге просто отправляете информацию, как ее первый заказ. И я использую инструкции IF ELSE, чтобы определить, является ли это первым порядком, или если он добавляет больше количества. incase вы интересуетесь, почему это делается так. его школьный проект. И они специально просили, чтобы это было сделано так.
EDIT:
Вот snipet из кода им возникли проблемы с:
UPDATE [Flowers].[dbo].[InvoiceDetails]
SET [ItemNumber] = [ItemNumber] + 1
WHERE InvoiceID like @InvoiceID and [Processed] like 0 and Flower like @FlowerID;
Не могли бы вы сказать, какие отчеты должны быть выполнены на 'состоянии ELSE' –
является ли это MySQL или SQL Server Где это делается в' UPDATE' в этой хранимой процедуре – wchiquito
Это SQL Server правильно? –