是否有一种标准方法可以使用 SQL 在数据库中模拟表创建?我不想创建表,只需检查它是否可以创建。一种方法是创建它,然后再次删除它。还有什么办法吗?
问问题
228 次
5 回答
4
大多数主要服务器都支持事务 DDL,因此您可以按照以下方式进行操作:
begin transaction
create table Foo ...
rollback transaction
理论上,如果出现错误应该报告给客户端,但不会完全创建表。
于 2009-07-31T09:16:46.863 回答
2
取决于您感兴趣的 SQL DBMS。例如 Postgres 支持事务 DDL,以下将起作用:
START TRANSACTION;
CREATE TABLE ... ();
<check for error here>
ROLLBACK;
于 2009-07-31T09:16:28.283 回答
0
如果您使用的是 MySQL,则可以使用临时存储引擎创建它,例如MEMORY。
于 2009-07-31T09:17:40.060 回答
0
真的,您必须实际创建它以确保一切正常。
外键引用、用作默认或检查约束或计算列中的函数直到执行时才被检查。
于 2009-07-31T09:18:13.693 回答
0
一种基本方法(SQL Server)是使用“ SET FMTONLY ON ”。
用于检查语句是否有效,但不会告诉您所有内容(例如,如果表已经存在)。
这将成功:
SET FMTONLY ON
EXECUTE ('CREATE TABLE SomeTable(SomeField INTEGER)')
SET FMTONLY OFF
这不会:
SET FMTONLY ON
EXECUTE ('CREATE TABLE SomeTable(dodgysyntax)')
SET FMTONLY OFF
这种方法可能对 SELECT 语句更有用,这是我过去使用的方法。它实际上并不执行语句,而是返回元数据。
于 2009-07-31T09:24:01.170 回答