怎样向建立好的一个视图,插入数据!!!!!!急用~~~~~~~~~~~

lingzhong01 2005-11-16 11:35:30
CREATE TABLE loginInfo --登录/私人信息表
(
A varchar(50) NOT NULL,
B varchar(128) NOT NULL,
C varchar(50) NOT NULL PRIMARY KEY,
D varchar(10) NOT NULL ,
E datetime
)
GO


CREATE TABLE appealInfo --招聘/求职信息表
(
C varchar(50) NOT NULL,
A1 varchar(13) null,
B1 varchar(6) not null,
D1 varchar(20),
)
ALTER TABLE appealInfo ADD CONSTRAINT
FK_appealInfo_loginInfo FOREIGN KEY
(
C
) REFERENCES loginInfo
(
C
)
GO
以上为两个基础表

创建以下一个视图
create view userInfor
as
select
A,
B,
C,
D,
A1,
B1,
D1
from
loginInfo, --登录/私人信息表
appealInfo --招聘/求职信息表

问:怎样向该视图中插入数据
...全文
115 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcoder 2005-12-15
  • 打赏
  • 举报
回复
在视图上建立 INSTEAD OF 触发器
----------------------------------
--示例

--原始数据
create table t1(id int primary key,name varchar(10))
create table t2(id int primary key,sex char(2),age int)
go

--视图
create view v
as
select a.id,a.name,b.sex,b.age
from t1 a join t2 b on a.id=b.id
go

--处理的触发器
--新增处理
create trigger tr_insert on v
instead of insert
as
insert t1 select id,name from inserted
insert t2 select id,sex,age from inserted
go

--删除处理
create trigger tr_delete on v
instead of delete
as
delete t1
from t1 a join deleted b on a.id=b.id

delete t2
from t2 a join deleted b on a.id=b.id
go

--更新处理
create trigger tr_update on v
instead of update
as
select mid=identity(int,1,1),* into #i from inserted
select mid=identity(int,1,1),id into #d from deleted

update t1 set id=b.i_id,name=b.name
from t1 a join(
select i_id=i.id,d_id=d.id,name
from #i i join #d d on i.mid=d.mid
)b on a.id=b.d_id

update t2 set id=b.i_id,sex=b.sex,age=b.age
from t2 a join(
select i_id=i.id,d_id=d.id,sex,age
from #i i join #d d on i.mid=d.mid
)b on a.id=b.d_id
go

--数据测试
--插入数据
insert v select 1,'张三','男',23
union all select 2,'李三','女',23
union all select 3,'王三','男',25

--更新数据
update v set age=25 where age=23
update v set id=id+3,name=name+'_new'
where id>1

--删除数据
delete from v where id=1
go

--显示结果
select * from v
select * from t1
select * from t2
go

--删除测试
drop table t1,t2
drop view v

/*--测试结果

id name sex age
----------- ---------- ---- -----------
5 李三_new 女 25
6 王三_new 男 25

(所影响的行数为 2 行)

id name
----------- ----------
5 李三_new
6 王三_new

(所影响的行数为 2 行)

id sex age
----------- ---- -----------
5 女 25
6 男 25

(所影响的行数为 2 行)
--*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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