Обсуждение: 7.1.1 Lock Problems on Views

Поиск
Список
Период
Сортировка

7.1.1 Lock Problems on Views

От
Brian Powell
Дата:
Greetings,

I am investigating whether our application will run on 7.1.1 (from 
7.0.3), and our client software only accesses the database through views 
for security and convenience.

In our client app, we lock our table before doing something to it.  
Fortunately, in 7.0.3, a view looked like a table and we could perform:

lock v_whatever in share row exclusive mode;

However, in 7.1.1, it comes back and tells me that:

ERROR:  LOCK TABLE: v_whatever is not a table

The HUGE advantage in 7.0.3 was that we could present our db through 
views and the client didn't have to know.

I tried to put the lock statements into the rule of each view when the 
rule does the actual work, such as:

create rule v_whatever_insert as on insert to v_whatever  do instead (    lock whatever in share row exclusive mode;
insertinto whatever (blah) values (new.blah);  );
 

However, the view won't be created, it claims there is a syntax error.

So, with 7.1.1, how can I create views and lock the data when modifying 
the table?

Thanks,

--Brian


Re: 7.1.1 Lock Problems on Views

От
Tom Lane
Дата:
Brian Powell <brian@owlscreech.com> writes:
> In our client app, we lock our table before doing something to it.  

Why don't you redesign the app to not use table-level locks?
An MVCC-aware app should have little or no need for table-level
locking.

Locking views strikes me as a pretty fragile, if not outright broken,
approach anyway --- a lock on a view would only protect you against
other users of the same view, not against other users accessing the
same underlying tables through different views.
        regards, tom lane


Re: 7.1.1 Lock Problems on Views

От
Brian Powell
Дата:
On Thursday, May 31, 2001, at 10:42 AM, Tom Lane wrote:

> Why don't you redesign the app to not use table-level locks?
> An MVCC-aware app should have little or no need for table-level
> locking.
>

Thanks, I'll read up on MVCC in the docs.  While digging around, I came 
across the MVCC and it was the first I have heard of it (I haven't been 
reading up on the new features of 7.1)...

--Brian