关于表的默认约束的问题

dpzc_love 2009-07-15 11:36:50

--建立默认约束的疑问
--1.建立表,再在相应字段上加默认约束
USE MASTER
GO
IF OBJECT_ID('TBL_AREA','U') IS NOT NULL
DROP TABLE TBL_AREA;
CREATE TABLE TBL_AREA
(
ID INT NOT NULL,
JIANCHEN VARCHAR(10) NOT NULL,
AREANAME NVARCHAR(50) NOT NULL,
FLAG INT NOT NULL
)
GO
ALTER TABLE TBL_AREA ADD CONSTRAINT D_TBLAREA_FLAG DEFAULT(0) FOR FLAG WITH VALUES
GO
--2.建立表时,直接在列上加上相应的默认约束
USE MASTER
GO
IF OBJECT_ID('TBL_AREA','U') IS NOT NULL
DROP TABLE TBL_AREA;
CREATE TABLE TBL_AREA
(
ID INT NOT NULL,
JIANCHEN VARCHAR(10) NOT NULL,
AREANAME NVARCHAR(50) NOT NULL,
FLAG INT NOT NULL CONSTRAINT D_TBLAREA_FLAG DEFAULT(0)
)
GO
--3.分开写怎么就会报错呢?莫非不能这么写?
USE MASTER
GO
IF OBJECT_ID('TBL_AREA','U') IS NOT NULL
DROP TABLE TBL_AREA;
CREATE TABLE TBL_AREA
(
ID INT NOT NULL,
JIANCHEN VARCHAR(10) NOT NULL,
AREANAME NVARCHAR(50) NOT NULL,
FLAG INT NOT NULL,
CONSTRAINT D_TBLAREA_FLAG DEFAULT(0) FOR FLAG --消息 102,级别 15,状态 1,第 9 行 'for' 附近有语法错误。
)
GO
...全文
130 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuguanlin 2009-07-15
  • 打赏
  • 举报
回复
create default def_name...
go
sp_bindefault....
go
dpzc_love 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 feixianxxx 的回复:]
引用 5 楼 dpzc_love 的回复:
TO:feixianxxx
你给的解决方案与 2.建立表时,直接在列上加上相应的默认约束 一样的哇.
我只是希望知道为什么不能像第3种那么写.或者是我哪里写错了.呵呵.


好像还真没那样建 默认的 没见过 你既然可以后面建 为什么非要这么建呢。。
[/Quote]

不是非要这么建立的,呵呵.只是看到其他约束,譬如主键,外键,CHECK约束都可以用第3种方式建立.我想知道默认约束是否这样可以这样写.所以试了试...也才有了此贴.
feixianxxx 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dpzc_love 的回复:]
TO:feixianxxx
你给的解决方案与 2.建立表时,直接在列上加上相应的默认约束 一样的哇.
我只是希望知道为什么不能像第3种那么写.或者是我哪里写错了.呵呵.

[/Quote]
好像还真没那样建 默认的 没见过 你既然可以后面建 为什么非要这么建呢。。
dpzc_love 2009-07-15
  • 打赏
  • 举报
回复
TO:feixianxxx
你给的解决方案与 2.建立表时,直接在列上加上相应的默认约束 一样的哇.
我只是希望知道为什么不能像第3种那么写.或者是我哪里写错了.呵呵.
feixianxxx 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dpzc_love 的回复:]
楼上的牛牛,先看清楚问题在CTRL+V哦.
[/Quote]

IF OBJECT_ID('TBL_AREA','U') IS NOT NULL
DROP TABLE TBL_AREA;
CREATE TABLE TBL_AREA
(
ID INT NOT NULL,
JIANCHEN VARCHAR(10) NOT NULL,
AREANAME NVARCHAR(50) NOT NULL,
FLAG INT NOT NULL--逗号去掉
CONSTRAINT D_TBLAREA_FLAG_1 DEFAULT(0))
GO
dpzc_love 2009-07-15
  • 打赏
  • 举报
回复
楼上的牛牛,先看清楚问题在CTRL+V哦.
htl258_Tony 2009-07-15
  • 打赏
  • 举报
回复
DEFAULT 定义
每列只能有一个 DEFAULT 定义。


DEFAULT 定义可以包含常量值、函数、SQL-92 niladic 函数或 NULL。下表显示 niladic 函数及其在执行 INSERT 语句时返回的默认值。 SQL-92 niladic 函数 返回的值
CURRENT_TIMESTAMP 当前日期和时间。
CURRENT_USER 执行插入操作的用户名。
SESSION_USER 执行插入操作的用户名。
SYSTEM_USER 执行插入操作的用户名。
USER 执行插入操作的用户名。


DEFAULT 定义中的 constant_expression 不能引用表中的其它列,也不能引用其它表、视图或存储过程。


不能在数据类型为 timestamp 的列或具有 IDENTITY 属性的列上创建 DEFAULT 定义。


如果用户定义数据类型绑定到默认对象,则不能在该用户定义数据类型的列上创建 DEFAULT 定义。
dpzc_love 2009-07-15
  • 打赏
  • 举报
回复
自己沙发先.
feixianxxx 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dpzc_love 的回复:]
引用 6 楼 feixianxxx 的回复:
引用 5 楼 dpzc_love 的回复:
TO:feixianxxx
你给的解决方案与 2.建立表时,直接在列上加上相应的默认约束 一样的哇.
我只是希望知道为什么不能像第3种那么写.或者是我哪里写错了.呵呵.


好像还真没那样建 默认的 没见过 你既然可以后面建 为什么非要这么建呢。。


不是非要这么建立的,呵呵.只是看到其他约束,譬如主键,外键,CHECK约束都可以用第3种方式建立.我想知道默认约束是否这样可以这样写.所以试了试...也才有了此贴.
[/Quote]
O(∩_∩)O~ 目前还没找到方法
LZ研究精神 表扬

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧