Re: [SQL] char(19) to varchar(32)
От | Tom Lane |
---|---|
Тема | Re: [SQL] char(19) to varchar(32) |
Дата | |
Msg-id | 10207.948302673@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: [SQL] char(19) to varchar(32) (Marc Tardif <admin@wtbwts.com>) |
Ответы |
Re: [SQL] char(19) to varchar(32)
|
Список | pgsql-sql |
Marc Tardif <admin@wtbwts.com> writes: > Actually, here's my complete rule and error message: > CREATE RULE prod_company AS ON UPDATE > TO company_base WHERE OLD.company <> NEW.company > DO UPDATE prod_base set company = NEW.company > WHERE prod_base.cid = OLD.oid; > ERROR: Type of 'company' does not match target column 'company' > > company in prod_base is char(19); > company in company_baase is varchar(32); Interesting. You can get the same error from just doing the UPDATE by hand --- so it's not got anything to do with the rule environment: create table prod_base (company char(19)); create table company_base (company varchar(32)); update prod_base set company = company_base.company; ERROR: Type of 'company' does not match target column 'company' but update prod_base set company = company_base.company::char; is accepted. Even more interesting, so is update prod_base set company = company_base.company::text; so it's not simply a matter of UPDATE missing automatic coercion support; it's willing to do a coercion if you hand it an expression, but seemingly not if you hand it a simple field reference. This sure looks like a bug to me... I recommend a CAST as a workaround for now, but I'll try to fix it for 7.0. regards, tom lane
В списке pgsql-sql по дате отправления: