重新运行mysql升级脚本
mysql中有没有办法编写可重新运行的sql脚本? 我尝试了“IF EXISTS”语法,但这似乎只适用于存储过程。 “select if”语法似乎不能满足我的需要 理想情况下,我想做以下事情:重新运行mysql升级脚本,mysql,mysql-management,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 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;
谢谢。也许您可以将数据库架构修订版存储在合适的表中,并将其用作更新处理的标准?也许您可以将数据库架构修订版存储在合适的表中,并将其用作更新处理的标准?我们使用类似SQL Server的结构
IF 0 = (SELECT COUNT(*) FROM <your table> WHERE <your condition>)
BEGIN
<your work here>
END
要管理SQL部分,我们需要可重复的。如果重新运行脚本,并且存在值,则计数*不是零,并且不会再次执行此操作。我们使用类似SQL Server的构造
IF 0 = (SELECT COUNT(*) FROM <your table> WHERE <your condition>)
BEGIN
<your work here>
END
要管理SQL部分,我们需要可重复的。如果重新运行脚本且存在值,则计数*不是零,并且不会再次执行此操作。您可以使用:
INSERT IGNORE INTO t1 ...
您可以从返回中看到是否插入了行。请注意,它要求有一个唯一的约束,否则您只会得到重复的约束。如果您有主键,这也是唯一的约束。您可以使用:
INSERT IGNORE INTO t1 ...
insert into myTable(name)
select 'some_name_value' from myTable
where not exists (select 1 from myTable where name = 'some_name_value')
limit 1;
您可以从返回中看到是否插入了行。请注意,它要求有一个唯一的约束,否则您只会得到重复的约束。如果您有主键,这也是唯一的约束
insert into myTable(name)
select 'some_name_value' from myTable
where not exists (select 1 from myTable where name = 'some_name_value')
limit 1;
如果值不存在,将插入这些值
如果不存在,则会插入值。查看MySQL手册,您可以在其中找到控制结构下所需的所有内容查看MySQL手册,您可以在其中找到控制结构下所需的所有内容这似乎是最有希望的,但它是否依赖于特定版本的MySQL?它在5.0中似乎不起作用。。。你能提供一个更完整的例子吗?正如我提到的,语法来自SQL Server。这项技术应该可以翻译。我不知道MySql为流控制提供了什么样的过程语言,比如t/SQL。这似乎是最有希望的,但它是否依赖于特定版本的MySql?它在5.0中似乎不起作用。。。你能提供一个更完整的例子吗?正如我提到的,语法来自SQL Server。这项技术应该可以翻译。我不知道MySql为流控制提供了什么过程语言,比如t/SQL。