PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

टेक्स्ट कॉलम को पोस्टग्रेज करता है जो केवल लोअरकेस की अनुमति देता है/रूपांतरित करता है और कोई विशेष वर्ण नहीं है जैसे:öáè

इस translate() . के दूसरे पैरामीटर में वांछित वर्ण डालें कॉल करें:

CREATE TABLE lawyer (
  id SERIAL PRIMARY KEY,
  name VARCHAR NOT NULL,
  url_name VARCHAR check(translate(url_name, 'abcdefghijklmnopqrstuvwxyz', '') = '') NOT NULL,
  gender VARCHAR(1) check (gender in ('m','f')) NOT NULL
);

insert into lawyer
values (default, 'Adam Smith', 'domain', 'f');

INSERT 0 1

insert into lawyer
values (default, 'Adam Smith', 'dömain', 'f');

ERROR:  new row for relation "lawyer" violates check constraint "lawyer_url_name_check"
DETAIL:  Failing row contains (3, Adam Smith, dömain, f).

वैकल्पिक रूप से आप एक ट्रिगर बना सकते हैं, जो फ्लाई पर मान को संशोधित करता है:

create or replace function lawyer_before_insert_or_update()
returns trigger language plpgsql as $$
begin
    new.url_name := lower(new.url_name);
    if translate(new.url_name, 'abcdefghijklmnopqrstuvwxyz', '') <> '' then
        raise exception 'Incorrect url name.';
    end if;
    return new;
end $$;

create trigger lawyer_before_insert_or_update
before insert or update on lawyer
for each row execute procedure lawyer_before_insert_or_update();

insert into lawyer
values (default, 'Adam Smith', 'DOMAIN', 'f')
returning *;

 id |    name    | url_name | gender 
----+------------+----------+--------
  4 | Adam Smith | domain   | f
(1 row)

INSERT 0 1

insert into lawyer
values (default, 'Adam Smith', 'dömain', 'f');

ERROR:  Incorrect url name.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कई User_ID को एक ही रूप में संदर्भित और सहेजना

  2. PostgreSQL में दो स्कीमा की तुलना कैसे करें

  3. केवल न्यूनतम COUNT() के साथ पंक्तियों और स्तंभों (a.k.a. पिवट) को स्थानांतरित करें?

  4. समय श्रृंखला में अंतराल का पता लगाएं और हटाएं

  5. Psycopg2 क्वेरी दशमलव लौट रही है ('मान')