使用 SQL 模拟表创建
是否有标准方法可以使用 SQL 在数据库中模拟表创建? 我不想创建该表,只需检查是否可以创建它。 一种方法是创建它,然后再次删除它。 还有其他办法吗?
Is there a standard way to simulate a table creation in a database by using SQL? I don't want the table to be created, just check if it could be created.
One way would be to create it and then delete it again.
Any other way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
一种基本方法 (SQL Server) 是使用“SET FMTONLY ON ”。
对于检查语句是否有效很有用,但不会告诉您一切(例如,表是否已存在)。
这会成功:
这不会:
这种方法可能对 SELECT 语句更有用,这就是我过去使用它的目的。 它实际上并不执行该语句,而是返回元数据。
One basic method (SQL Server) is to use "SET FMTONLY ON".
Useful for checking the statement is valid, though won't tell you everything (e.g. if the table already exists).
This will succeed:
This will not:
This approach is probably more useful for SELECT statements, which is what I've used it for in the past. It doesn't actually execute the statement, but returns out the metadata.
大多数主要服务器都支持事务性 DDL,因此您可以按照以下方式执行操作:
理论上,如果出现错误,应该将其报告回客户端,但不会完全创建表。
Most major servers support transactional DDL, so you can do something along these lines:
Theoretically, in case of error it should be reported back to client, but table will not be created altogether.
取决于您感兴趣的 SQL DBMS。例如,Postgres 支持事务性 DDL,并且以下内容将起作用:
Depends on the SQL DBMS you're interested in. For example Postgres supports transactional DDL and the following will work:
如果您使用 MySQL,则可以使用瞬态存储引擎创建它,例如 内存。
If you're using MySQL, you could create it using a transient storage engine, like MEMORY .
实际上,您必须实际创建它以确保一切正常。
外键引用、用作默认值或检查约束或计算列中的函数直到执行时才会检查。
Really, you have to actually create it to make sure everything is OK.
Foreign key references, functions used as default or check constraints or in computed columns are not checked until execute time.