3
我在PostgreSQL數據庫中有相當多的bytea字段。可以在PostgreSQL的bytea字段中設置(在dbase內)大小限制嗎?
(i)是否有辦法通過使用數據庫功能在這些字段上施加大小上限(以便在嘗試超過此大小時拋出錯誤)? (ii)或者,有沒有一種在SQLAlchemy中做到這一點的好方法?
我在PostgreSQL數據庫中有相當多的bytea字段。可以在PostgreSQL的bytea字段中設置(在dbase內)大小限制嗎?
(i)是否有辦法通過使用數據庫功能在這些字段上施加大小上限(以便在嘗試超過此大小時拋出錯誤)? (ii)或者,有沒有一種在SQLAlchemy中做到這一點的好方法?
您可以使用域(PostgreSQL大小)。
CREATE DOMAIN my_bytea_8 AS bytea CHECK(length(value) <= 8);
postgres=# SELECT 'NAZDARBAZAR'::my_bytea_8;
ERROR: 23514: value for domain my_bytea_8 violates check constraint "my_bytea_8_check"
SCHEMA NAME: public
DATATYPE NAME: my_bytea_8
CONSTRAINT NAME: my_bytea_8_check
LOCATION: ExecEvalCoerceToDomain, execQual.c:4042
或者只是在相關列上引發CHECK。 –
對於那些感興趣的人,我找到了一系列的鏈接來解釋這個:bytea長度函數(http://www.postgresql.org/docs/8.2/static/functions-binarystring.html);創建一個域(http://www.postgresql.org/docs/9.1/static/sql-createdomain.html);和SQL Alchemy約束(http://docs.sqlalchemy.org/en/latest/core/constraints.html);但是在SQLAlchemy中創建域時存在問題(http://stackoverflow.com/questions/18662846/how-to-represent-a-custom-postgresql-domain-in-sqlalchemy);在SQLAlchemy中可能有另一種方法來完成此操作。 – Soferio