繁体   English   中英

如何使用SQL创建空表?

[英]How do I create an empty table with SQL?

这对MySQL本身来说不是什么大问题。

全文

我正在编写一个非常小的PHP框架。 它不像现有框架那样迫使您使用某种方法。 它不像CMS框架。 相信我,我见过Zend框架,我已经广泛使用了像Joomla和WordPress这样的CMS, 没有一个能够接近我正在做的事情。

介绍问题

我正在编写数据库抽象部分。 你得到类方法,如:: table_exists()等。它的设计方式是人们可以轻松添加不同的数据库类并使用它们(例如:mysql,mssql,oracle,flatfile ...)。

他们只需要编写一个满足基本抽象类的类。

真实问题

我正在编写:: table_create()的功能,但有一个主要问题:MySQL不喜欢空表(即没有列)。

我有几个建议的修复:

  • 对于每个新表,创建一个常用列,例如'id'(type = INT)
  • 对于每个新表,创建一个尽可能不使用任何空间的临时列(可能是一个布尔列?)
  • 以某种方式延迟表创建,直到可以创建至少一列

这种方法肯定是新的,我想在这里对它进行一些公正的评论(“但没有人这样做”的任何内容都不会这样做)。

好吧,我会选择1),添加一个通用ID列,无论如何你可能会发现,或者选项3)延迟表创建。 我假设他们调用:: table_create()后会调用table_add_col()等等。所以只需要延迟创建,直到至少有一列,或者直到他们第一次尝试使用该表为止。

您提出的修复程序看起来非常好。 但我会以不同的顺序推荐它们。 如果你能够推迟创作,那可能是最好的。 我的第二个最喜欢的是拥有一个只有ID的表,尽管你可能会删除这一列,如果你想创建一个只有两个外键的多对多关系表。

最后一点。

你在这里做的真的很奇怪。 动态创建表格? 动态还是什么? 好吧......无论你想要完成什么。 你应该看一下面向文档/面向对象的数据库,比如couchdb http://couchdb.apache.org/ 您可以创建文档并动态添加所需的任何字段。 那些与你的“专栏”最接近的东西

但是你喜欢它......你的第一次尝试是丑陋的,因为它可能导致冲突。 第二次尝试很笨拙。 但是如果你这样做,就用uniqueprefix_random创建一个col,这样你就可以删除它了。 但它很好......我不知道该怎么说。

他们的做法似乎是唯一有意义的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM