Vous n'êtes pas identifié(e).
j'ai implementé cette méthode sur une table de 400 records jointe à deux autres tables (foreign) avec un front-end access/vba (mon client aime ça).
la vue était une linked table en Access et tout semble aller correctement
cela sera-t-il le cas avec une table de plusieurs milliers de records ?
de toute façon, il faut faire des forms qui sont updatables alors qu'elles sont basées sur des queries multi-tables !
sans le trigger instead of i,u,d, je ne vois comment on pourrait faire
un grand merci à vous deux !
on peut faire des update, insert et delete dans des vues arbitrairement complexes avec autant de jointures que l'on veut avec un trigger
INSTEAD OF INSERT OR DELETE OR UPDATE
sur la view.
Encore merci pour votre tenacité.
Je suis le seul, pour le moment à faire des connexions fdw. Parce que je fais des tests qui créent et droppent des fdw servers.
Je pensais que le
drop server if exists fdw_utilities cascade;devait remettre les pendules à zéro.
Ceci dit, le pg_ctl restart a aujourd'hui terminé (droppé) les connexions.
Et je peux continuer à tester. J'ai des problèmes au niveau des permissions. Si je définis des permissions aux niveau des foreign tables, je suppose que je dois le faire au niveau des tables de base. Non ?
le
ALTER FUNCTION public.create_fdw_utilities(text, text, text, text)
après le create foreign table "rubin_permissions" (
est un problème de copier/coller
l'éditeur de pgadmin4 est aussi dangereux que sa procédure d'installation
C'est moi qui crée les connexions en testant les functions qui créent les fdws. Ca c'est sûr. Ce n'est personne d'autre. Un exemple :
-- FUNCTION: public.create_fdw_utilities(text, text, text, text)
-- DROP FUNCTION public.create_fdw_utilities(text, text, text, text);
CREATE OR REPLACE FUNCTION public.create_fdw_utilities(
this_host_address text,
this_database_name text,
this_user_name text,
this_password text)
RETURNS void
LANGUAGE 'plpgsql'
COST 100
VOLATILE SECURITY DEFINER
ROWS 0
AS $BODY$
declare
sql_stmt text;
port_number text;
this_table_name text;
begin
port_number = '5432';
drop server if exists fdw_utilities cascade;
sql_stmt = 'create server fdw_utilities '
|| ' foreign data wrapper postgres_fdw '
|| ' options (host'
|| ''''
|| this_host_address
|| ''''
|| ', dbname '
|| ''''
|| this_database_name
|| ''''
|| ', port'
|| ''''
|| port_number
|| ''''
|| ')';
execute sql_stmt;
sql_stmt = 'create user mapping for public '
|| ' server fdw_utilities '
|| ' options (user '
|| ''''
|| this_user_name
|| ''''
|| ', password '
|| ''''
|| this_password
|| ''''
|| ')';
execute sql_stmt;
create foreign table "rubin_permissions" (
pg_user_name text,
permissions text,
db_name text,
pg_server_name text,
pg_server_address text
) server fdw_utilitiesALTER FUNCTION public.create_fdw_utilities(text, text, text, text)
OWNER TO rubin;
options (
schema_name 'public',
table_name 'rubin_permissions'
);
sql_stmt = 'create view public.user_rubin_permissions as select '
|| ' * from rubin_permissions where pg_user_name = '
|| ''''
|| this_user_name
|| '''';
execute sql_stmt;
sql_stmt = 'grant usage on foreign server '
|| this_fdw_server_name
|| ' to '
|| this_user_name;
execute sql_stmt;
sql_stmt = 'grant usage on schema public to '
|| this_user_name;
execute sql_stmt;
sql_stmt = 'grant all on public.user_rubin_permissions to '
|| this_user_name;
execute sql_stmt;
end
ALTER FUNCTION public.create_fdw_utilities(text, text, text, text)
OWNER TO rubin;
$BODY$;Devrais-je faire un
drop server if exists fdw_utilities cascade;quand le user quitte le front-end ?
Merci pour votre aide car dans les livres, tout est facile...
"Grise est la théorie, vert est l'arbre de la vie" Goethe ;-))
Pour le moment, il n'y a que moi qui crée des fdw servers en développement. Il n'y donc que moi qui crée toutes ces connexions. C'est étrange !
mais plus tard, chaque fois qu'un utilisateur se connectera, il créera des fdws. (Plusieurs dbs sur plusieurs serveurs. Le user se connecte à son sandbox où il a ses tables locales et les tables foreign)
Faut-il que je fasse des drop servers fdw quand le user quitte l'application?
Merci à tous deux
Merci pour votre réponse.
Si je vous comprends, je devrais augmenter max_connections ?
Mais commentexpliquer que pg_ctl restart ne remet pas les compteurs à zéro ?
Bonjour,
J'avais utilisé des FDWs dans un projet et ça marchait bien.
Je recommence dans un autre projet.
Je dois jouer plusieurs fois le script qui crée le serveur FDW car j'ai un problème de permission sur la foreign table.
Et tout d'un coup, quand j'essaie de faire un select sur la foreign table, je reçois :
ERROR: could not connect to server "fdw_utilities"
DETAIL: FATAL: sorry, too many clients already
FATAL: sorry, too many clients alreadyet une chiée de
CONTEXT: Remote SQL command: SELECT pg_user_name, permissions, db_name, pg_server_name, pg_server_address FROM public.list_permissions
Remote SQL command: SELECT pg_user_name, permissions, db_name, pg_server_name, pg_server_address FROM public.list_permissions
Remote SQL command: SELECT pg_user_name, permissions, db_name, pg_server_name, pg_server_address FROM public.list_permissionsje fais pg_ctl restart
ça continue
j'ai pourtant
shared_buffers = 2048MB
max_connections = 100
Je pédale dans la choucroute et je vous appelle à l'aide !
Merci ! Et bon week-end à vous et à Dalibo
Merci mais je ne vois pas si je peux faire
CREATE MATERIALIZED VIEW mymatview ...
INSERT INTO mymatview...
DELETE FROM mymatview...
UPDATE mymatview...
Encore merci et bonne soirée
Bonjour,
Est-il possible de faire des insert / update / delete sur une vue matérialisée étant entendu qu'on pourrait le faire avec une vue ordinaire ayant le même select ?
On en parle sans doute dans la documentation mais je n'ai pas trouvé où.
Merci pour votre attention
Merci à tous deux pour vos réponses.
Ceci dit, en cherchant avec "dba cannot see data", on trouve pas mal d'information concernant SQL Server...
Ce qui voudrait, semble-t-il, dire que le raisonnenement de Guillaume n'est pas absolu...
Affaire à suivre, semble-t-il...
Bonjour,
J'ai un client un peu parano. Il veut que j'administre ses dbs mais il ne veut pas que je puisse voir les données.
PGSql donne-t-il un mécanisme pour cela ?
Merci pour votre attention,
MD
Merci pour cette réponse rapide et cette explication claire.
Bonne journée à vous et bonne chance dans toutes vos projets
Bonjour,
J'aimerais savoir s'il est possible de faire la chose suivante :
1/ pg_dump du schema public d'une db
2/ pg_restore de ce backup vers une autre db dans un schema autre que public
Je n'arrive pas à interpréter ce que j'ai vu sur le net.
Il y aurait dans la db de destination, en plus du schema public, des schemas qui serviraient pour faire des restores de dbs utilisées par des collaborateurs itinérants lorsqu'ils reviennent au bureau. La db fait moins de 5 megas.
Merci pour votre attention et bonne journée
Merci !
Je vais envoyer un message aux russes....
et avec
select
substring(input_line, char_length(substring(input_line from '[0-9.]*[ ]')) + 1) as node_name
,text2ltree(substring(input_line from '[0-9.]*')) as node_path
from staging;j'me ramasse
psql:load.sql:4: ERROR: syntax error
DETAIL: Unexpected end of line.Bonjour,
Dans un précédent projet en 9.5, j'avais fait :
create table ltree_node (
node_id integer primary key
default nextval('ltree_node_sequence')
,node_name text
,node_path ltree
);
create index path_gist_idx on ltree_node using gist(node_path);
insert into ltree_node(node_name, node_path) select
substring(input_line,
char_length(substring(
input_line from '[0-9.]*[ ]')) + 1) as node_name
,cast(substring(input_line from '[0-9.]*') as ltree) as node_path
from tree_staging;Et ça marchait ! Maintenant, je suis en 9.6 et ça ne marche pas !
Le
as ltree me vaut
ERROR: syntax error
DETAIL: Unexpected end of line.
********** Error **********
ERROR: syntax error
SQL state: 42601
Detail: Unexpected end of line.idem avec
substring(input_line from '[0-9.]*')::ltreeJe ne trouve rien sur le net... Qqun pourrait-il éclairer ma lanterne ?
Merci !
un # -*- coding: utf-8 -*- qui manque qq part ?
dans quelle langue travaillez-vous ?
Bonjour,
Mes connaissances en Linux et C ayant été acquises il y a longtemps, j'aimerais les rafraîchir.
Quels livres (en anglais) pourriez-vous me conseiller ?
Certains me diront peut-être que cette question n'a rien à faire sur ce forum.
Pour ma part, je pense que des spécialistes PostgreSQL me donneront certainement de bons conseils puisque mon but est de devenir un spécialiste PostgreSQL.
Par ailleurs, je pense apprendre un langage généraliste de pointe. Pensez-vous que dans le futur, les langages de programmation fonctionelle vont se développer dans le monde PostgreSQL? Je trouve OCaml fort cartésien.
Merci pour votre attention,
elephantsql.wordpress.com/
Merci !
Mais tel est bien le cas ! Un mystère de plus avec pgadmin4
la semaine prochaine, je vais installer pgadmin4 sur windows10 chez mon client
j'ai vu une abondante littérature à ce sujet sur le net
ce serait bien que pgamdin4 soit aussi facile à installer que mysql workbench
Problème résolu : j'ai effacé le fichier pgadmin.db que j'ai finalement trouvé dans mon home_directory/.pgadmin/pgadmin4.db
et j'ai restarté
il était temps, je pensais conseiller à mon client de refaire l'application en COBOL
je reçois le message : ERROR pgadmin: The desktop user pgadmin4@pgadmin.org was not found in the configuration database.
mais si je fais : find . -name 'pgadmin4.db', je ne trouve rien.
Franchement, je suis très inquiet...
Merci. Je viens d'envoyer un message à redmine.
Avez-vous vu sur le site de pgadmin ne décrit pas de procédure d'installation ?
Sur mon ordi perso, j'ai mis 1 heures à installer pg 9.6 et 5 heures à installer pgadmin4.
Et sur l'ordi du client, je pédale dans la choucroute depuis 4 heures.
Sans doute que mon QI n'est pas assez haut pour pgadmin4 (sur ubuntu 16.04) ![]()