重新运行mysql升级脚本

时间:2009-12-08 21:05:09

标签: mysql mysql-management

在mysql中有没有办法编写可重新运行的sql脚本? 我试过:'IF EXISTS'语法,但这似乎只适用于存储过程。 似乎'select if'语法不能满足我的需要。

理想情况下,我想做类似的事情:

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;

感谢。

4 个答案:

答案 0 :(得分:1)

您可以使用:

INSERT IGNORE INTO t1 ...

您可以从返回中看到是否插入了行。请注意,它要求存在唯一约束,否则您将获得重复。如果您有主键,这也是一个唯一约束。

答案 1 :(得分:0)

也许您可以将数据库架构修订存储在合适的表中,并将其用作更新处理的标准?

答案 2 :(得分: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;

如果它们尚不存在,则会插入值。

答案 3 :(得分:-2)

我们使用类似(SQL Server)的构造

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

管理我们想要重复的SQL部分。如果脚本重新运行并且值在那里,则count(*)不为零,并且它不会再次工作。