Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eradman/pg-safeupdate

A simple extension to PostgreSQL that requires criteria for UPDATE and DELETE
https://github.com/eradman/pg-safeupdate

postgresql-extension

Last synced: 17 days ago
JSON representation

A simple extension to PostgreSQL that requires criteria for UPDATE and DELETE

Awesome Lists containing this project

README

        

Require SQL Where Clause
========================

`safeupdate` is a simple extension to PostgreSQL that raises an error if
`UPDATE` and `DELETE` are executed without specifying conditions. This
extension was initially designed to protect data from accidental obliteration of
data that is writable by [PostgREST].

Installation
------------

Build from source using

gmake
gmake install

Activate per-session by running

load 'safeupdate';

Make this mandatory for all databases and connections by adding the following to
`postgresql.conf`:

shared_preload_libraries=safeupdate

Or enable for a specific database using

ALTER DATABASE mydb SET session_preload_libraries = 'safeupdate';

Options
-------

Once loaded this extension can be administratively disabled by setting

SET safeupdate.enabled=0;

Examples
--------

Try to update records without `WHERE` clause

UPDATE FROM rack SET fan_speed=70;
-- ERROR: UPDATE requires a WHERE clause

Select results from a CTE that attempts to modify data:

WITH updates AS (
UPDATE rack SET fan_speed=70
RETURNING *
)
SELECT * FROM updates;
-- ERROR: UPDATE requires a WHERE clause

Set a column value for a range of records

UPDATE rack SET fan_speed=90 WHERE fan_speed=70;

Set a column value for all the records in a table

UPDATE rack SET fan_speed=90 WHERE 1=1;

News
----

Notification of new releases are provided by an
[Atom feed](https://github.com/eradman/pg-safeupdate/releases.atom),
and release history is covered in the [NEWS](NEWS) file.

[PostgREST]: http://postgrest.com