新手求助~求sql语句

游走的彷徨 2011-11-24 03:36:29
利用查询分析器创建AFTER类型的触发器,当公司名称长度小于2时,将插入的数据删除;
公司表名CompanyInfo
公司名称是CName..
...全文
39 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
游走的彷徨 2011-11-24
[Quote=引用 6 楼 geniuswjt 的回复:]
SQL code

--注意:mssql的触发器是语句级的,而不是行级。如果一次插入多个此触发器效果基本报废,只能逐条插入
create trigger trig_test on CompanyInfo
for insert
as

if exists(select 1 from inserted where len(Cname)<2)
rollback
[/Quote]

我就用你这个了~
回复
游走的彷徨 2011-11-24
[Quote=引用 1 楼 pengxuan 的回复:]
SQL code

if object_id('CompanyInfo','U') is not null
drop table CompanyInfo
go
create table CompanyInfo
(
name varchar(10)
)
go
if object_id('trCompanyInfo','TR')is not null
drop tr……
[/Quote]

谢了~辛苦了~
回复
游走的彷徨 2011-11-24
[Quote=引用 3 楼 fredrickhu 的回复:]
触发器。
[/Quote]

- -.我是新手
回复
中国风 2011-11-24
沒必要用觸發器

在插入前就檢查,比插入后觸發器檢查再刪除效率高
回复
geniuswjt 2011-11-24

--注意:mssql的触发器是语句级的,而不是行级。如果一次插入多个此触发器效果基本报废,只能逐条插入
create trigger trig_test on CompanyInfo
for insert
as

if exists(select 1 from inserted where len(Cname)<2)
rollback

回复
中国风 2011-11-24
create table CompanyInfo
(
name varchar(10) NOT NULL CHECK (LEN(name)>2)
)
GO
INSERT INTO CompanyInfo SELECT 'a'

/*
訊息 547,層級 16,狀態 0,行 1
INSERT 陳述式與 CHECK 條件約束 "CK__CompanyInf__name__45F365D3" 衝突。衝突發生在資料庫 "tempdb",資料表 "dbo.CompanyInfo", column 'name'。
陳述式已經結束。

*/
回复
--小F-- 2011-11-24
也可以用check 约束。
回复
--小F-- 2011-11-24
触发器。
回复
中国风 2011-11-24
加個檢查就行了

check len(Name)>2
回复
pengxuan 2011-11-24

if object_id('CompanyInfo','U') is not null
drop table CompanyInfo
go
create table CompanyInfo
(
name varchar(10)
)
go
if object_id('trCompanyInfo','TR')is not null
drop trigger trCompanyInfo
go
create trigger trCompanyInfo on CompanyInfo
for insert
as
if exists(select 1 from inserted where len(name)<2)
rollback
go
insert into CompanyInfo values ('a')
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2011-11-24 03:36
社区公告
暂无公告