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: 19 days ago
JSON representation
A simple extension to PostgreSQL that requires criteria for UPDATE and DELETE
- Host: GitHub
- URL: https://github.com/eradman/pg-safeupdate
- Owner: eradman
- License: other
- Created: 2018-03-27T02:01:25.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-12-17T00:25:14.000Z (4 months ago)
- Last Synced: 2025-03-29T19:02:43.650Z (26 days ago)
- Topics: postgresql-extension
- Language: Ruby
- Homepage:
- Size: 31.3 KB
- Stars: 126
- Watchers: 6
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: NEWS
- License: LICENSE
Awesome Lists containing this project
- jimsghstars - eradman/pg-safeupdate - A simple extension to PostgreSQL that requires criteria for UPDATE and DELETE (Ruby)
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 installActivate 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 clauseSelect 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 clauseSet 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