是否有Oracle %TYPE的MySQL版本?

6

在Oracle中,如果我需要声明与另一列相同类型的东西,我可以简单地使用%type:

Create table foo(
   copiedType OTHER_TABLE.COLUMN_NAME%TYPE
   /* yada yada yada... */

在MySQL中有等效的运算符吗?

我认为在MySQL中这是不可能的。 - Emmanuel N
@EmmanuelN 是的...我也这么认为。你知道,Oracle并不完美,但它有一些MySQL所缺乏的好处。(话虽如此,PostGreSQL是两者之间最好的,但我爱上了那个数据库) - cwallenpoole
2个回答

2

事实证明,简短的回答是“不行”。虽然如果您愿意创建一个存储函数(或使用另一种语言)并通过自己的定制解析引擎来创建表格,它是可以伪造的,但这样做根本不值得。C'est sera...


0

除非我漏掉了什么,否则在MySQL中替代Oracle的%type唯一的选择是以下内容:

SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
  WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name';

我非常确定你不能在CREATE TABLE语句中使用它。 - Mchl
@Dennis 我知道如何获取列类型,但是因为我不想考虑模式完整性(思考是危险的),所以我更喜欢在变量声明或列定义中使用某些东西。 - cwallenpoole
@cwallenpoole 可以理解。理论上,您应该能够创建一个存储上述输出的过程,并使用该变量来创建您尝试构建的表格。但我没有尝试过,所以不能确定它是否有效。 - Dennis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接