如何约束职工号?

liguokun 2010-05-13 03:09:13
现在两个表:仓库表(仓库号,仓库名),职工表(职工号,职工名);
仓库表中仓库号为6个字符;
职工表职工号为8字符,如何约束为:前六位参照仓库表的仓库号,后2位为数字字符。
...全文
92 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liguokun 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sql_sf 的回复:]
SQL code
create trigger tri_name on 职工表
for insert ,update
as
if exists(select 1
from 职工表
where left(职工号,6) not in (select 仓库号
……
[/Quote]

你这个后两位的数字都没有进行约束?
Rotel-刘志东 2010-05-13
  • 打赏
  • 举报
回复
create trigger tr_test on职工表
for insert,update
as
if not exists(select 1 from inserted a join 仓库表 b on a.职工表 like b.仓库号+'[0-9][0-9]')
begin
raiseeeor('你输入的职工号不符合规范,请重新输入!',16,1)
rollback
end
go
htl258_Tony 2010-05-13
  • 打赏
  • 举报
回复
create trigger tr_test on 职工表
for insert,update
as
if not exists(select 1 from inserted a join 仓库表 b on a.职工号 like b.仓库号+'[0-9][0-9]')
begin
raiserror('您输入的职工号不符规范,请重新输入!',16,1)
rollback
end
go
sql_sf 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sql_sf 的回复:]
SQL code
create trigger tri_name on 职工表
for insert ,update
as
if exists(select 1
from 职工表
where left(职工号,6) not in (select 仓库号
……
[/Quote]
--更正
create trigger tri_name on 职工表
for insert ,update
as
if exists(select 1
from inserted
where left(职工号,6) not in (select 仓库号
from 仓库表))
rollback
sql_sf 2010-05-13
  • 打赏
  • 举报
回复
create trigger tri_name on 职工表
for insert ,update
as
if exists(select 1
from 职工表
where left(职工号,6) not in (select 仓库号
from 仓库表))
rollback
youyou2404 2010-05-13
  • 打赏
  • 举报
回复
这种逻辑最好用程序
liguokun 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lcw321321 的回复:]
用触发器来约束吧
[/Quote]

兄弟,用触发器怎么搞哦,可以给个详细的步骤吗?
永生天地 2010-05-13
  • 打赏
  • 举报
回复
在程序里做吧
永生天地 2010-05-13
  • 打赏
  • 举报
回复
这个用sql的约束做不了了
lcw321321 2010-05-13
  • 打赏
  • 举报
回复
用触发器来约束吧

34,576

社区成员

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

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