标签: alter-column

更改列:null为非null

我有一个表有几个可以为空的整数列.由于多种原因,这是不可取的,所以我希望将所有空值更新为0,然后将这些列设置为NOT NULL.除了将空值更改为0,必须保留数据.

我正在寻找特定的SQL语法来将列(调用它ColumnA)改为" not null".假设数据已更新为不包含空值.

使用SQL Server 2000.

t-sql sql-server null alter-table alter-column

1177
推荐指数
8
解决办法
136万
查看次数

更改列,添加默认约束

我有一个表,其中一列是datetime类型的"Date".我们决定为该列添加默认约束

Alter table TableName
alter column dbo.TableName.Date default getutcdate() 
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:

"."附近的语法不正确

有没有人在这里看到任何明显错误的东西,我错过了(除了有一个更好的名称列)

t-sql sql-server alter-table sql-server-2008 alter-column

180
推荐指数
4
解决办法
33万
查看次数

如何在SQL Server中一次更改多个列

我需要ALTER表中几列的数据类型.

对于单个列,以下工作正常:

ALTER TABLE tblcommodityOHLC
ALTER COLUMN
    CC_CommodityContractID NUMERIC(18,0) 
Run Code Online (Sandbox Code Playgroud)

但是如何在一个语句中更改多个列?以下不起作用:

ALTER TABLE tblcommodityOHLC
ALTER COLUMN
    CC_CommodityContractID NUMERIC(18,0), 
    CM_CommodityID NUMERIC(18,0)
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server alter-column

127
推荐指数
5
解决办法
23万
查看次数

如何在PostgreSQL表中更改列的数据类型?

在PostgreSQL交互式终端中输入以下命令会导致错误:

ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11);
Run Code Online (Sandbox Code Playgroud)

更改列的数据类型的正确命令是什么?

sql postgresql alter-table alter-column psql

87
推荐指数
3
解决办法
19万
查看次数

在大型表上增加VARCHAR列的大小时会出现问题吗?

我正在使用SQL Server 2008,我需要在一个大约500k行的表上创建一个更大的VARCHAR字段,从(200到1200).我需要知道的是,如果有任何问题我没有考虑过.

我将使用此TSQL语句:

ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
Run Code Online (Sandbox Code Playgroud)

我已经在数据的副本上试过了,这个陈述没有我能看到的不良影响.

这样做有什么可能的问题我可能没有考虑过吗?

顺便说一下,该列未编入索引.

sql-server varchar sql-server-2008 alter-column

84
推荐指数
2
解决办法
11万
查看次数

使用默认值将Nullable列更改为NOT NULL

今天我遇到了一个旧表,其中一个名为"Created"的日期时间列允许空值.现在,我想要更改它,使其为NOT NULL,并且还包含一个约束以添加默认值(getdate()).

到目前为止,我已经得到了以下脚本,只要我事先清理了所有空值,它就可以正常工作:

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 
Run Code Online (Sandbox Code Playgroud)

有没有办法在ALTER语句中同时指定默认值?

sql sql-server alter-table alter-column

61
推荐指数
3
解决办法
15万
查看次数

依赖列上的ALTER TABLE

我试图将主键的列数据类型从int更改为tinyint.此列是其他表中的外键.因此,我收到以下错误:


消息5074,级别16,状态1,行1对象'PK_User_tbl'依赖于列'appId'.消息5074,级别16,状态1,行1对象'FK_Details_tbl_User_tbl'取决于列'appId'.消息5074,级别16,状态1,行1对象'FK_Log_tbl_User_tbl'取决于列'appId'.消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN appId失败,因为一个或多个对象访问此列.


除了删除依赖项并重新创建它们之外还有其他方法吗?

alter-table sql-server-2008 alter-column

46
推荐指数
2
解决办法
15万
查看次数

SQL:ALTER COLUMN为更短的CHAR(n)类型

我正在使用MS SQL SERVER 2003.我想更改其中一个表中的列,以使条目中的字符更少.这与此问题相同:更改表列以接受更多字符,除了我想要更少字符而不是更多字符.

我的一个表中有一个列,其中包含九位数的条目.以前在该表上工作的开发人员错误地将该列设置为包含十位数的条目.我需要将类型更改CHAR(10)CHAR(9).

按照上面讨论的讨论说明,我写了这个声明

ALTER TABLE [MY_TABLE] ALTER COLUMN [MY_COLUMN] CHAR(9);

这将返回错误消息"字符串或二进制数据将被截断".我看到我的九位数字符串有一个空格,使它们成十个数字.

如何告诉SQL Server丢弃额外空间并将我的列转换为CHAR(9)类型?

sql alter-table alter-column

12
推荐指数
2
解决办法
2万
查看次数

将列更改为不允许空值

所以我想更改我的SQL Server数据库中的列不允许空值,但我一直收到错误.这是我正在使用的sql语句:

alter table [dbo].[mydatabase] alter column WeekInt int not null
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'WeekInt', table 'CustomerRadar.dbo.tblRWCampaignMessages'; column does not allow nulls. UPDATE fails.
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)

我很确定我的sql是正确的,并且我正在尝试更改的列中当前没有空值,所以我真的不确定导致问题的原因.有任何想法吗?我很难过.

sql-server null alter-column

12
推荐指数
1
解决办法
2万
查看次数

SQL SET DEFAULT在MS Access中不起作用

可能重复:
ALTER TABLE语句中的DEFAULT子句导致语法错误

我试图在MS Access中使用SQL查询执行以下语句;

ALTER TABLE [table] ALTER COLUMN [column] SET DEFAULT 'default value'
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个显示错误的对话框 Syntax error in ALTER TABLE statement.

当我单击"确定"时,它会突出显示该单词DEFAULT.我也尝试了以下声明;

ALTER TABLE [table]
ADD CONSTRAINT [Default] DEFAULT 'default value' FOR [column]
Run Code Online (Sandbox Code Playgroud)

我又得到了一个错误 Syntax error in CONSTRAINT clause.

在MS Access中设置默认值的正确语法是什么?db文件是Access 2003格式.

sql ms-access default alter-table alter-column

7
推荐指数
1
解决办法
1万
查看次数

如果索引依赖于该列而不重新创建索引,如何将列从null更改为非null?

我有一个Column声明为的列,NULL DEFAULT(GETUTCDATE())并且有一个包含此列的非聚集索引.我想将此列更改为NOT NULL DEFAULT(GETUTCDATE()),当我运行ALTER TABLE ALTER COLUMN语句时,SQL Azure服务表示它无法更改列,因为根据此列有一个索引.

这是一个生产数据库,该表包含大约一千万条记录.所以我宁愿不删除并重新创建索引,因为这会降低数据库的速度(特别是创建索引可能需要几分钟).

如何在不重新创建索引的情况下更改列?

database sql-server alter-column database-indexes azure-sql-database

7
推荐指数
1
解决办法
2441
查看次数

将postgresql列从字符变换为整数

我正在尝试将列类型从"字符变化(15)"更改为整数.

如果我从tableY limit(10)运行"=#SELECT columnX"; 我回来了:

columnX 
----------
34.00
12.00
7.75
18.50

4.00
11.25

18.00
16.50
Run Code Online (Sandbox Code Playgroud)

如果我运行"=#\ d + columnX"我会回来:

     Column     |         Type          |                           Modifiers                           | Storage  | Description 

columnX       | character varying(15) | not null                                                      | extended | 
Run Code Online (Sandbox Code Playgroud)

我已经搜索了高低,在po​​stgresql irc频道上询问,但没有人能弄清楚如何改变它,我试过:

ALTER TABLE race_horserecord ALTER COLUMN win_odds TYPE integer USING (win_odds::integer);
Run Code Online (Sandbox Code Playgroud)

也:

ALTER TABLE tableY ALTER COLUMN columnX TYPE integer USING (trim("columnX")::integer);
Run Code Online (Sandbox Code Playgroud)

每次我回来:

"错误:整数的输入语法无效:"34.00""


任何帮助,将不胜感激.

postgresql alter-table alter-column psql

3
推荐指数
1
解决办法
9566
查看次数

在 Mysql 中将列类型从 tinyInt 更改为 Varchar

我需要将列类型从tinyInt(用作bool)更改为Varchar,而不丢失数据。我在 stack-overflow 上找到了很多答案,但它们都是用 postgres 编写的,我不知道如何在 Mysql 中重写它。堆栈溢出问题的答案如下:

ALTER TABLE mytabe ALTER mycolumn TYPE VARCHAR(10) USING CASE WHEN mycolumn=0 THEN 'Something' ELSE 'TEST' END;

类似的逻辑在 Mysql 中会是什么样子?

mysql sql alter-table alter-column

3
推荐指数
1
解决办法
4860
查看次数