关于SQL server2000触发器问题

[复制链接]
查看11 | 回复4 | 2011-5-17 12:11:48 | 显示全部楼层 |阅读模式
现数据库中A表以:代号(字符),名称为参考值。想在新输入数据时,insert的内容必须符合A表内的代号,名称两项,若是不符合A表两项参考值,数据将不能保存数据。请熟悉数据的高手帮帮忙!谢谢
回复

使用道具 举报

千问 | 2011-5-17 12:11:48 | 显示全部楼层
好像用约束更好吧









<h4class=\"ask\">追问


能举个例不,我对数据库还不是很精通。谢谢
回复

使用道具 举报

千问 | 2011-5-17 12:11:48 | 显示全部楼层
开始建表的时候,你就一定有代号(字符),名称的取值范围
CREATETABLEA
(
代号varchar(50),
名称varchar(200),
CONSTRAINTchk_dhCHECK(代号in(\'SH12345\',\'SH123456\',\'SH1234567\'))
CONSTRAINTchk_mcCHECK(名称in(\'名称1\',\'名称2\',\'名称3\',\'名称4\'))
)
把你的取值范围放在in里面

如果你说你一开始没数据,那按你的要求是插不进去数据的,因为你要insert的内容必须符合A表内的代号,名称两项,而这两项表中根本就没有。

如果现在有数据,现在开始约束,那就更新表
altertableAaddCONSTRAINTchk_dhCHECK(代号in(\'SH12345\',\'SH123456\',\'SH1234567\'))
altertableAaddCONSTRAINTchk_mcCHECK(名称in(\'名称1\',\'名称2\',\'名称3\',\'名称4\'))
回复

使用道具 举报

千问 | 2011-5-17 12:11:48 | 显示全部楼层
你好,能说详细点吗?我电脑没装QQ,谢谢
回复

使用道具 举报

千问 | 2011-5-17 12:11:48 | 显示全部楼层
当时我也想到过这样做触发器,但是我要的\"CODE\"列类型需为‘字符型’(如SH12345),而非‘INT’类型,这样就有点难度了。数据库中\"CODE\"列是不允许输入\'INT\'类型数据的吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行