sql在视图中如何插入新的数据?

如题所述

第1个回答  2022-11-16

对于 单表的视图, 插入/修改 数据是没有问题的。 (只要你不做特别的设置)

对于多表的视图, 操作的时候,会存在一定的问题。

下面是一个例子:

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...

相似回答
大家正在搜