为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:已经创建好的数据表,无法更改字段顺序,不知道是实现不了,还是产品经理脑子进水,国产数据库中达梦一直我感觉是佼佼者,这个这个低级失误说实话太low了,创建前还能调整,创建后上下箭头灰色了不能用了?谁能保证一锤子就把数据库字段创建好了,后期再加难道就往后罗列?赶紧改了吧,丢死人了。
ALTER TABLE `ZK_TEST`.`test_column` CHANGE COLUMN `c4` `c4` VARCHAR(45) NULL DEFAULT NULL AFTER `c5`;
/* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之外运行此脚本。*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_test_column
(
c1 bigint NULL,
c2 char(10) NULL,
c5 nchar(10) NULL,
c4 nchar(10) NULL,
c3 varchar(50) NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_test_column SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.test_column)
EXEC('INSERT INTO dbo.Tmp_test_column (c1, c2, c5, c4, c3)
SELECT c1, c2, c5, c4, c3 FROM dbo.test_column WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.test_column
GO
EXECUTE sp_rename N'dbo.Tmp_test_column', N'test_column', 'OBJECT'
GO
COMMIT
从上面实现逻辑,也可以看出需要将表进行重建,代价是很大的。
3. 数据库是基础软件,实现该功能也不存在什么技术难度,纯粹是因为该功能用到的场景较少,而且较好进行规避和调整,完全不需要从数据库层面来直接提供。
每个产品都有自己的规则,你不如去oracle官网,让人家也给你修改一下吧。调整字段顺序,也不影响什么,自己手写select 列就好了。
这个按钮是给您创建表的时候调整顺序的,修改表是不能调整列顺序的,修改表如果要调整顺序就相当于要把表重建,数据要重新插入一遍,对于几千万、上亿的大表就是一个灾难;关系数据库字段顺序是没有意义的,您写查询语句的时候可以随意确定顺序。所以并不是不愿,而是不能。