如果我處於類似的情況,我會創建一個存儲過程來處理確定order_id是否已經存在的邏輯。
--Run this first
--It will create a stored procedure call InsertConversion
--Begin of stored procedure
CREATE PROCEDURE InsertConversion
@user_id int,
@url_id int,
@order_id int,
@sale varchar(5),
@commission money,
@transaction_date datetime,
@process_date datetime
AS
BEGIN
SET NOCOUNT ON;
if not exists(select order_id from conversion where order_id = @order_id)
begin
INSERT INTO conversion(user_id, url_id, order_id, sale, commission, transaction_date, process_date)
VALUES(@user_id, @url_id, @order_id, @sale, @commission, @transaction_date, @process_date)
end
END
GO
--End of stored procedure
一旦存儲過程創建的,你可以執行它,並通過在相同的價值觀,你會進入一個INSERT/VALUES語句:
exec InsertConversion 1,1,1,'32',0.3995,'2010-11-15 12:15:18','2010-11-15 12:15:18'
exec InsertConversion 3,6,2,'*not-available*',0.001975,'2010-11-15 12:15:18','2010-11-15 12:15:18'
如果你想成爲幻想,你可以在商店程序中包含一些「打印」聲明,告訴你它是否插入記錄。
所以在你的例子中order_id對於兩行都是1。在這種情況下你想做什麼?你想用order_id <> 1來實現什麼? – Unreason 2010-11-15 12:25:31
'VALUES'或表中的'UNIQUE'?如果在上面的情況下表格已經包含1,那麼任何記錄是否應該在那裏? – Quassnoi 2010-11-15 12:28:47
道歉 - 這是一個不好的例子。 Editted。 – tommizzle 2010-11-15 12:32:04