2009-12-08 27 views
2

有沒有辦法在mysql中編寫可重新運行的sql腳本? 我試過:'IF EXISTS'語法,但似乎只適用於存儲過程。 這似乎並不是'select if'語法將做我想做的。可重新運行的mysql升級腳本

理想我想這樣做:

IF NOT EXISTS (select * from table where name='Name') Then insert into table values('Name'); 
else select 'Name has already been inserted into table'; 
end if; 

感謝。

+0

看看MySQL手冊,你可以在「控制結構」下找到你需要的所有東西 – 2009-12-08 21:22:55

回答

0

也許你可以將數據庫模式版本存儲在合適的表中,並將其用作更新處理的標準?

-2

我們使用類似(SQL Server)的

IF 0 = (SELECT COUNT(*) FROM <your table> WHERE <your condition>) 
BEGIN 
    <your work here> 
END 

一個結構來管理我們要重複的SQL部分。如果腳本重新運行並且值在那裏,則計數(*)不爲零,並且不會再次執行該工作。

+0

這似乎是最有前途的,但是它依賴於特定版本的mysql嗎?它似乎在5.0下工作...你能提供一個更完整的例子嗎? – 2009-12-08 22:04:38

+0

正如我所說的,語法來自SQL Server。 *技術*應該翻譯。我不知道MySql爲流量控制提供的過程語言,比如T/SQL。 – DaveE 2009-12-09 18:57:04

1

您可能能夠使用:

INSERT IGNORE INTO t1 ... 

您可以從回行是否被插入或看不到。請注意,它需要有一個唯一的約束,否則你只會得到重複。如果你有一個主鍵,這也是一個獨特的約束。

0
insert into myTable(name) 
select 'some_name_value' from myTable 
where not exists (select 1 from myTable where name = 'some_name_value') 
limit 1; 

如果它們不存在,會插入值。