如何drop有default constraint的column - SQL

本文介绍了一次SQL Server中表结构调整的过程,包括修改UPTIME和NEWTIME字段为非空的datetime2类型,并删除了NEWTIME字段上的默认约束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


USE [MK_UboxChs]
GO

/****** Object:  Table [dbo].[ACCOUNT_ITEM_TBL]    Script Date: 09/21/2010 09:43:38 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

alter TABLE [dbo].[ACCOUNT_ITEM_TBL]
alter column UPTIME datetime2 NOT NULL
go

declare @default sysname, @sql nvarchar(max)
-- get name of default constraint
select @default = name
from sys.default_constraints
where parent_object_id = object_id('ACCOUNT_ITEM_TBL')
AND type = 'D'
AND parent_column_id = (
    select column_id
    from sys.columns
    where object_id = object_id('ACCOUNT_ITEM_TBL')
    and name = 'NEWTIME'
)
-- create alter table command as string and run it
set @sql = N'alter table ACCOUNT_ITEM_TBL drop constraint ' + @default
exec sp_executesql @sql
go

alter TABLE [dbo].[ACCOUNT_ITEM_TBL]
alter column NEWTIME datetime2 NOT NULL
go

### T-SQL 的基础概念与使用方法 #### 什么是 T-SQL? T-SQL 是 Transact-SQL 的缩写,它是 SQL Server 数据库管理系统中的编程语言扩展。它基于标准的 ANSI SQL,并增加了许多功能来支持复杂的业务逻辑和数据操作。 --- #### 查询数据的基础语法 通过 `SELECT` 语句可以实现从数据库中检索数据的功能。以下是其基本结构: ```sql SELECT column_name_1, column_name_2, ... FROM table_name; ``` 此语句用于指定要查询的列以及目标表[^1]。如果需要查询所有列,则可以用通配符 `*` 替代具体的列名。 --- #### 创建数据库的方法 在 T-SQL 中可以通过以下命令创建一个新的数据库: ```sql CREATE DATABASE database_name; ``` 该语句会定义一个新数据库及其存储配置。例如: ```sql CREATE DATABASE ExampleDB ON PRIMARY ( NAME = 'ExampleDB_Data', FILENAME = 'C:\SQLData\ExampleDB.mdf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% ); ``` 上述代码展示了如何设置初始大小、最大容量以及文件增长比例等参数[^2]。 --- #### 删除数据库的操作 当不再需要某数据库时,可执行删除操作。注意,这一动作不可逆,请谨慎处理。 ```sql DROP DATABASE database_name; ``` 例如: ```sql DROP DATABASE student; ``` 这条指令将永久移除名为 `student` 的数据库实例[^3]。 --- #### 修改现有数据库或对象 对于已存在的数据库或者其中的对象(如表),也可以利用 ALTER 和其他相关关键字来进行调整。比如更改某一字段的数据类型: ```sql ALTER TABLE table_name ALTER COLUMN column_name new_data_type(new_size); ``` 假设有一个员工记录表需更新电话号码长度限制为十位数整型数值,则编写如下脚本即可完成转换过程: ```sql ALTER TABLE Employees ALTER COLUMN Phone INT(10); ``` --- #### 综合案例分析 下面给出一段综合性的例子展示如何结合以上知识点构建实际应用环境下的解决方案: 假设有这样一个需求场景:我们需要建立一家书店管理系统的后台框架雏形,其中包括书籍库存清单维护模块;为此先设计好相应的物理架构再填充测试样例供后续开发人员参考验证之用。 ##### 步骤 A - 构建核心组件 首先我们得搭建起整个项目的基石部分即初始化必要的元信息载体——也就是我们的主干表格BooksList: ```sql -- Step 1: Create the Books Database. CREATE DATABASE BookStore; USE BookStore; -- Step 2: Define a Table to Hold Information About Each Book. CREATE TABLE BooksList( ISBN VARCHAR(13) NOT NULL UNIQUE, Title NVARCHAR(MAX), Author NVARCHAR(100), Price MONEY DEFAULT 0 CHECK (Price >= 0), StockQuantity SMALLINT CONSTRAINT chk_stock_positive CHECK (StockQuantity >= 0) ); INSERT INTO BooksList(ISBN,Title,Author,Price,StockQuantity) VALUES('978-3-16-148410-0','The Hobbit','J.R.R. Tolkien',19.99,50); ``` 这里不仅涵盖了简单的增删改查还引入了一些约束条件确保录入资料的有效性和一致性. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值