对于 单表的视图, 插入/修改 数据是没有问题的。 (只要你不做特别的设置)
对于多表的视图, 操作的时候,会存在一定的问题。
下面是一个例子:
1> CREATE VIEW v_main_sub AS
2> SELECT
3> test_main.id AS main_id,
4> test_main.value AS main_value,
5> test_sub.id AS sub_id,
6> test_sub.value AS sub_value
7> FROM
8> test_main, test_sub
9> WHERE
10> test_main.id = test_sub.main_id;
11> go
1> SELECT * FROM v_main_sub;
2> go
main_id main_value sub_id sub_value
----------- ---------- ----------- ----------
1 ONE 1 ONEONE
2 TWO 2 TWOTWO
(2 行受影响)
1> UPDATE v_main_sub
2> SET main_value='ONX'
3> WHERE main_id = 1;
4> go
(1 行受影响)
1> UPDATE v_main_sub
2> SET sub_value='ONXONX'
3> WHERE main_id = 1;
4> go
(1 行受影响)
1> DELETE FROM v_main_sub WHERE main_id = 1;
2> go
消息 4405,级别 16,状态 1,服务器 GMJ-PC\SQLEXPRESS,第 1 行
视图或函数 'v_main_sub' 不可更新,因为修改会影响多个基表。
-- 这个触发器, 只测试输出, 不删除数据。
1> CREATE TRIGGER v_main_sub_trigger
2> ON v_main_sub
3> INSTEAD OF DELETE
4> AS
5> DECLARE
6> @main_id INT,
7> @sub_id INT;
8> BEGIN
9> SELECT @main_id=main_id, @sub_id=sub_id FROM deleted;
10>
11>
12> PRINT(@main_id);
13> PRINT(@sub_id);
14> END;
15> go
1> DELETE FROM v_main_sub WHERE main_id = 1;
2> go
1
1
(1 行受影响)
1> DELETE FROM v_main_sub WHERE sub_id = 1;
2> go
1
1
(1 行受影响)
对于多表关联的视图, 删除的时候,需要人为的去判断
例如当 主表 和 子表,都只有一条记录的情况下。
无法判断 本次删除, 是要删除掉一个子表的记录,留下主表的。
还是 主表 子表的数据,一同删除。
sql在视图中如何插入新的数据?
对于 单表的视图, 插入\/修改 数据是没有问题的。 (只要你不做特别的设置)对于多表的视图, 操作的时候,会存在一定的问题。下面是一个例子:1> CREATE VIEW v_main_sub AS 2> SELECT 3> test_main.id AS main_id,4> test_main.value AS main_value,5> test_sub.id AS ...
向表或视图中插入新纪录的sql命令是
向表或视图中插入新纪录的SQL命令是INSERT INTO。如果要向视图中插入新纪录,使用的SQL语句与向表中插入新纪录的SQL语句是一样的。不同的是,视图中的数据是从一个或多个表中获取的,因此插入的新纪录也必须符合视图所依赖的表的结构和规则。
请问如何在SQL视图的表中新增一列,内容为某表格中相同id的其中一列...
CREATE VIEW VIEW_Table1 AS SELECT 姓名,SUM(成绩) AS 总成绩 FROM table1 GROUP BY 姓名 go --使用视图 select * from VIEW_Table1 --- 和表一样的 select * from VIEW_Table1 as a left join table2 on a.姓名=table2.姓名
SQL server数据库 ,在视图里面新加一个列怎么加
视图的语句就是你的select查询语句前面追加一个定义的前缀。你要多加一个列,就直接改后边的select语句即可 如:多增加一个时间的字段列f1,一个数字列f2,一个字符串的字段f3 CREATE VIEW [dbo].[CWDomesticCard]AS SELECT *,getdate() as f1,30 as f2,'ABC' AS F3 FROM ERAS2NONAML.eRASN...
SQL中视图的创建、更新和删除规则是什么?
- 插入新行:需确保视图包含所有NOT NULL列,以便新数据能正确插入。- 删除行:删除视图中的行会同步删除源表中的对应数据。4. 删除视图:当不再需要视图时,可以使用 `DROP VIEW` 语句:DROP VIEW view_name;如此,`CUSTOMERS_VIEW` 就会被从数据库中移除。通过使用视图,数据库操作变得更灵活,...
如何用sql语句在视图直插入记录?
视图一般来说是即使是一个表生成的也是不能插入的,因为视图通常不是全表字段,否则视图没意义
access数据库怎么添加一条新数据
具体方法如下:方法一 进入数据库,打开所要添加的表,在数据表视图下直接输入。如图所示:方法二 在SQL视图下输入如下语句 INSERT INTO表名(列1,列2,...)VALUES(值1,值2,...)【注意】1.是文本型的要加引号 2.日期两边要加
在SQL中怎么样同时对多个表同时插入数据
[with read only;] --使视图只读;END;A表进行DML操作时,使用替代触发器,对B表进行更新~create or replace trigger dml_A_B AFTER [before] insert [delete,update] on A FOR EACH ROW BEGIN [DML操作 to B]--你想要在A表DML操作时,同时对B表进行什么操作 --比如 INSERT INTO A (id)...
sqlserver2008怎么往视图插入另外一张表的信息
创建视图的语法 create view S_view1 as select sno,sname,sex from s where age>20 向视图中插入数据从另一张表中来 insert into 视图名称(列名称列表)select 列名称列表 from 表名称
SQLSERVER数据库中批量导入数据的几种方法
我们通过SQL脚本来插入数据,常见如下四种方式。方式一:一条一条插入,性能最差,不建议使用。INSERT INTO Product(Id,Name,Price) VALUES(newid(),'牛栏1段',160);INSERT INTO Product(Id,Name,Price) VALUES(newid(),'牛栏2段',260);...方式二:insert bulk 语法如下:BULK INSERT [ [ 'dat...