alter-table相关内容

如果存在则更改表或如果不存在则创建

我需要运行一个安装程序,它也可以是一个更新程序.安装程序需要能够最终拥有 mysql 数据库的特定方案/结构,无论某些表是否存在,是否遗漏了几列,或者不需要更改,因为它们的结构是最新的. 如何将 ALTER 和 CREATE 巧妙结合起来? 我在想一定有类似“添加...如果...重复"之类的东西 假设我有表 A.在一个客户端中,该表有一个列 -A1,另一个客户端有相同的表,但有 ..
发布时间:2021-11-27 08:39:06 数据库

将列添加到表中,然后在事务中更新它

我正在创建一个将在 MS SQL 服务器中运行的脚本.此脚本将运行多个语句并且需要是事务性的,如果其中一个语句失败,则停止整体执行并回滚任何更改. 在发出 ALTER TABLE 语句以将列添加到表然后更新新添加的列时,我无法创建此事务模型.为了立即访问新添加的列,我使用 GO 命令执行 ALTER TABLE 语句,然后调用我的 UPDATE 语句.我面临的问题是我无法在 IF 语句中发出 ..
发布时间:2021-11-27 08:38:59 数据库

SQLite 修改列

我需要修改 SQLite 数据库中的一列,但由于数据库已经在生产中,我必须以编程方式进行.根据我的研究,我发现为了做到这一点,我必须执行以下操作. 使用新架构创建一个新表 将数据从旧表复制到新表 放下旧桌子 将新表重命名为旧表名 对于应该相对容易的事情来说,这似乎是一项荒谬的工作.没有更简单的方法吗?我需要做的就是更改现有列的约束并为其指定默认值. 解决方案 这是 SQL ..
发布时间:2021-11-27 08:38:50 数据库

如何在 Postgresql 数据库中添加不允许为空的列?

我正在使用以下查询(针对 Internet 进行了清理)向我的 Postgresql 数据库添加一个新的“NOT NULL"列: ALTER TABLE mytable ADD COLUMN mycolumn 字符变化(50) NOT NULL; 每次运行此查询时,都会收到以下错误消息: 错误:列“mycolumn"包含空值 我被难住了.我哪里出错了? 注意:我主要使用 pgAdmi ..
发布时间:2021-11-27 08:38:39 其他开发

修改列 Vs 更改列

我知道,我们不能使用修改列语法来重命名列,但可以更改列语法. 我的问题是:修改语法的主要用途是什么? 例如, alter table tablename change col1 col1 int(10) not null 代替 alter table tablename modify col1 int(10) not null 已编辑 问题已替换 修改语法的主要用途 ..
发布时间:2021-11-27 08:38:22 数据库

为 InnoDB 的 ALTER TABLE 优化 MySQL

很快我们将需要对我们的生产数据库进行架构更改.我们需要尽量减少这项工作的停机时间,但是,ALTER TABLE 语句将运行很长时间.我们最大的表有1.5亿条记录,最大的表文件是50G.所有表都是 InnoDB,它被设置为一个大数据文件(而不是一个文件每个表).我们在 8 核机器、16G 内存和 RAID10 配置上运行 MySQL 5.0.46. 我在 MySQL 调优方面有一些经验,但这通 ..
发布时间:2021-11-27 08:38:07 数据库

在 sqlite3 中修改列的类型

我对 SQLite 3 还很陌生,刚才我不得不向我现有的表中添加一列.我开始这样做:ALTER TABLE thetable ADD COLUMN category;. 当然,我忘记指定该列的类型.我考虑做的第一件事是删除该列,然后重新添加它.但是,SQLite 似乎没有这样做的简单方法,我不得不备份表并在没有列的情况下重新创建它. 这看起来很乱,我想知道是否只有一种修改/添加列类型的 ..
发布时间:2021-11-27 08:37:46 数据库

ALTER 表 - 在 MySQL 中添加 AUTOINCREMENT

我在 MySQL 中用 itemID 列创建了一个表. 创建表格后,现在我想将此列更改为AUTOINCREMENT. 如何使用 ALTER 语句完成此操作? 表定义: ALLITEMS (itemid int(10) unsigned, itemname varchar(50)) 我正在使用以下代码,但它引发了语法错误 错误:语法不正确. ALTER TABL ..
发布时间:2021-11-27 08:37:38 数据库

如何更改 MySQL 列定义?

我有一个名为 test 的 mySQL 表: 创建表测试(locationExpect varchar(120) NOT NULL;); 我想将 locationExpect 列更改为: 创建表测试(locationExpect varchar(120);); 如何快速完成? 解决方案 您的意思是在创建表后对其进行更改吗?如果是这样,您需要使用 alter table,特别是: ..
发布时间:2021-11-27 08:37:29 数据库

ALTER TABLE 不锁定表?

在 MySQL 中执行 ALTER TABLE 语句时,整个表在语句执行期间处于读锁定状态(允许并发读取,但禁止并发写入).如果它是一个大表,INSERT 或 UPDATE 语句可能会被阻塞很长时间.有没有办法进行“热修改",比如添加一列,使表格在整个过程中仍然可以更新? 我主要对 MySQL 的解决方案感兴趣,但如果 MySQL 无法做到,我会对其他 RDBMS 感兴趣. 澄清一下, ..
发布时间:2021-11-27 08:37:11 数据库

创建临时表前先检查临时表是否存在,如果存在则删除

我正在使用以下代码检查临时表是否存在并在再次创建之前删除该表是否存在.只要我不更改列,它就可以正常工作.如果我稍后添加一列,它会给出一个错误提示“无效的列".请让我知道我做错了什么. IF OBJECT_ID('tempdb..#Results') 不是 NULL删除表#Results创建表#Results(公司 CHAR(3),StepId TINYINT,字段 ID TINYINT,)从#R ..
发布时间:2021-11-27 08:36:41 数据库

如何更改 PostgreSQL 数据库表中列的位置?

我尝试了以下方法,但没有成功: ALTER TABLE person ALTER COLUMN dob POSITION 37; 解决方案 "改变列位置" 在 PostgreSQL Wiki 中说: PostgreSQL 目前定义了列基于 attnum 列的顺序pg_attribute 表.唯一的办法更改列顺序是通过重新创建表,或通过添加列和旋转数据,直到你达到所需的布局. 这很 ..
发布时间:2021-11-27 08:36:33 其他开发

如果 SQLite 中不存在,则更改表添加列

我们最近需要向一些现有的 SQLite 数据库表添加列.这可以通过 ALTER TABLE ADD COLUMN 来完成.当然,如果表已经被改变了,我们想不管它.不幸的是,SQLite 不支持 ALTER TABLE 上的 IF NOT EXISTS 子句. 我们目前的解决方法是执行 ALTER TABLE 语句并忽略任何“重复列名"错误,就像 这个 Python 示例(但在 C++ 中). ..
发布时间:2021-11-27 08:36:24 数据库

sqlite alter table 在单个语句中添加多个列

是否可以在sqlite的单个语句中更改表添加多个列?以下方法无效. 更改表测试添加列 mycolumn1 文本,添加列 mycolumn2 文本; 解决方案 不,您必须一次添加一个.请参阅SQLite 的 ALTER TABLE 文档 顶部的语法图: ADD 分支中没有循环,因此不允许重复. ..
发布时间:2021-11-27 08:36:14 数据库

SQL Server 向现有表添加自动增量主键

作为标题,我有一个已经填充了 150000 条记录的现有表.我添加了一个 Id 列(当前为空). 我假设我可以运行查询来用增量数字填充此列,然后设置为主键并打开自动增量.这是正确的方法吗?如果是这样,我该如何填写初始数字? 解决方案 不 - 你必须反过来做:从一开始就把它添加为 INT IDENTITY - 它会是执行此操作时填充标识值: ALTER TABLE dbo.YourT ..
发布时间:2021-11-27 08:35:55 数据库