a表里有个NAME字段char(20),要求在插入和更改此表字段时里面的内容必须是'wang','cheng','ling','chui'信息,用约束做还是用触发器做限制好呢?如何写
解决方案 »
- 请问以下,SQL SERVER 2000 对硬件要求高吗??
- SQL一些基本的问题
- 请教高手
- SQL Server 2005 当中 大量数据 Count(*)慢的解决方法?
- 请问compute子句,谢谢,急!
- 如何对Datetime类型数据做到加减天数再写回去?
- 2005 management studio 下面 找不到 master 数据库
- !!急!!!如何可以连接到别的服务器上?如何可以得到某个数据库中是否存在某个表?
- 请问哪里有存储过程的电子资料啊,谢谢
- 数据拆分,重复的组合只保留一个,如何执行代码完成
- 如何把GROUP BY 语句中的字段以字符形式连续写入另一个表
- SQL2005 使用导入导出问题?
declare @t table(a varchar(5) check(a='wang' or a='cheng' or a='ling' or a='chui'))
insert into @t select 's'
语句已终止。
insert ta select 'wang'(所影响的行数为 1 行)
drop table ta
create table index_tb(id int constraint ck_id default 0,name varchar(20),xb varchar(2))
--查看表
exec sp_helpindex orders--索引
exec sp_helpconstraint index_tb --约束
exec sp_fkeys 'dbo.Person'--外键
--键不唯一,非聚集索引
create index id_index on index_tb(id)
--删除索引
drop index index_tb.id_index
--键聚集索引
create clustered index id_index on index_tb(id)
--删除索引
drop index index_tb.id_index
--创建check约束
alter table index_tb add constraint ck_index CHECK (name like '[0-9][0-9][0-9][0-9][0-9]')
alter table index_tb add constraint ck2_index check(xb in ('MM','GG'))
--删除check约束
alter table index_tb drop constraint ck2_index
--禁止表约束
alter table index_tb nocheck constraint ck_index
--恢复表约束
alter table index_tb check constraint ck_index
--禁止和恢复所有check-all关键字
select 'alter table '+name+' nocheck or check constraint all' from sysobjects where type='U'
--添加新默认值和约束
ALTER TABLE index_tb ADD CONSTRAINT de_name DEFAULT ('11111') FOR name
--删除表约束
alter table index_tb drop constraint de_name
-- 字段 UNIQUE NOT NULL = PRIMARY KEY 差不多
insert into index_tb(name,xb) select '12345','mm'select * from index_tbdelete index_tb
--or
declare @t table(a varchar(5) check (in('wang','cheng','ling','chui')))
insert into @t select 's'
/*
当然用check约束了 用触发器的话要加个更新和插入的触发器'wang','cheng','ling','chui'
这几个最长的字符也才5个 用char(20)似乎浪费了点
*/
CREATE TABLE [tableTest]
(
[name] CHAR(20),
CHECK([name] IN('wang','cheng','ling','chui'))
)
goDROP TABLE [tableTest]
用触发器也可以实玩
---
create trigger tr_t on t
after insert,update
as
if exists(select 1 from inserted where Name in('wang','cheng','ling','chui'))
begin
raiserror 50005 N'插入失败'
rollback
end
a表有10000多条记录,最后出现没有反应现像,是不是语句不对啊,已经有表了,在建约束怎么整啊
bing qie chu fa qi hui zeng jia xi tong wei hu de nan du.
用check和约束都可以实现还是用check比较好点