我试图将信息插入到我的数据库中创建的视图中,并抛出非常一般的错误。
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,现在只想插入两个新行。
答案 0 :(得分:2)
您没有说出您正在使用的SQL服务器。并非所有服务器都支持通过视图更新数据。
如果您正在使用可能的数据库,那么您应该知道并非所有视图都可以更新。这取决于数据库是否可以计算出它应该更改的记录。
所以这样的观点:
CREATE VIEW test AS select a, b, c from Foo where filtercol=2
可以更新但是带有复杂连接的视图不能 - 因为数据库无法确定源表中哪些记录需要更改。
编辑:我忘了添加一些数据库,你可以定义一个触发器,触发一个复杂的视图,告诉数据库做什么而不是插入/更新/删除操作(Postgres允许“代替”触发器支持这个)