SQL插入视图

时间:2016-05-31 11:11:18

标签: mysql sql

我试图将信息插入到我的数据库中创建的视图中,并抛出非常一般的错误。

  

1062 - 重复录入' 0'关键' PRIMARY' - 新的错误代码

     INSERT INTO eagle2
            (hotelname,
             hotelcity,
             hotelpostcode)
VALUES      ('EaglePalace',
             'Sydney',
             '2000')

INSERT INTO eagle2
            (hotelname,
             hotelcity,
             hotelpostcode)
VALUES      ('EagleRegis',
             'Perth',
             '6000')  

这两者都是分开的,在一起都没有用,我知道它可能很简单,但我已经浪费了2个小时了。

我有一个视图,我创建了已经调用的eagle2,现在只想插入两个新行。

eagles2

1 个答案:

答案 0 :(得分:2)

您没有说出您正在使用的SQL服务器。并非所有服务器都支持通过视图更新数据。

如果您正在使用可能的数据库,那么您应该知道并非所有视图都可以更新。这取决于数据库是否可以计算出它应该更改的记录。

所以这样的观点:

CREATE VIEW test AS select a, b, c from Foo where filtercol=2

可以更新但是带有复杂连接的视图不能 - 因为数据库无法确定源表中哪些记录需要更改。

编辑:我忘了添加一些数据库,你可以定义一个触发器,触发一个复杂的视图,告诉数据库做什么而不是插入/更新/删除操作(Postgres允许“代替”触发器支持这个)