2

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

4 回答 4

1

您也许可以使用:

INSERT IGNORE INTO t1 ...

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

于 2009-12-08T21:14:43.863 回答
0

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

于 2009-12-08T21:10:14.733 回答
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;

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

于 2009-12-08T21:19:56.477 回答
-2

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

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

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

于 2009-12-08T21:10:57.133 回答