我在一个数据库中有 30 个表,都是 InnoDB。他们有他们的结构。
我想做的实际上是将波纹管列添加到每个表中。
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text COLLATE utf8_unicode_ci NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
`categoryId` int(11) NOT NULL,
`imageId` int(11) NOT NULL,
`created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`createdId` int(11) NOT NULL,
`updatedId` int(11) NOT NULL,
`allowedEmployeeIds` text COLLATE utf8_unicode_ci NOT NULL,
在编程语言(假设是 PHP)中,通常的方法是创建一个抽象类,将所有公共(public)变量放在那里,然后从中继承。 MySQL呢?我应该怎么做?
由于设计原因,我不可能创建一个commonData
表并使用外键/连接。请注意,我是从头开始编写创建语句的,因此不需要更新。
最佳答案
我会仔细考虑这个问题——它很复杂,并且会为您尝试做的事情增添光彩。以后会增加很多工作。
但如果你真的想这样做,实现它的方法不是把它放在表定义中,而是创建一个脚本,可以将这些列添加到表中。。 p>
类似于:
ALTER TABLE table_name
ADD `id` int(11) NOT NULL AUTO_INCREMENT,
ADD `name` text COLLATE utf8_unicode_ci NOT NULL,
ADD `description` text COLLATE utf8_unicode_ci NOT NULL,
ADD `categoryId` int(11) NOT NULL,
ADD `imageId` int(11) NOT NULL,
ADD `created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
ADD `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
ADD `createdId` int(11) NOT NULL,
ADD `updatedId` int(11) NOT NULL,
ADD `allowedEmployeeIds` text COLLATE utf8_unicode_ci NOT NULL;
然后只需为您拥有的每个表执行此脚本。
如果您想编写一个脚本来对所有表执行此操作,请使用以下命令:
SHOW TABLES;
查找所有表。然后循环遍历所有表并对所有表执行更改脚本。
关于mysql - 如何继承mysql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10661156/