Eventuali duplicati:
Column ‘mary’ does not exist"Colonna 'x' non esiste" di errore per stringa letterale 'x' in PostgreSQL
ho bisogno di controllare i valori che possono essere accettate a una colonna attraverso un vincolo di controllo. Ho bisogno di usare il vincolo di controllo, perché questo è per un incarico del college.
Uso questo codice per creare e aggiungere il vincolo alla tabella.
CREATE TABLE Ereignis(
E_Id Serial PRIMARY KEY,
Typ varchar(15),
Zeitpunkt timestamp,
Ort varchar(32),
Anzahl_Pers int
);
ALTER TABLE Ereignis ADD
CONSTRAINT typ_ch CHECK (Typ in (’Verkehrsunfall’, ’Hochwasser’, ’Sonstiges’));
Ecco l'errore che ottengo:
ERROR: column "’verkehrsunfall’" does not exist
Come ottengo da questo errore si cerca di confrontare colonna tip con la colonna Verkehrsunfall, dove, come cerco di controllare i valori colonna try può ottenere è una delle stringhe ('Verkehrsunfall', 'Hochwasser', 'Sonstiges').
Questa è esattamente la stessa sintassi che il nostro docente ci ha mostrato durante la conferenza. Non sono sicuro se sia possibile confrontare i varchar con il controllo? O cosa sto sbagliando?
Ecco l'esempio dalla lezione:
CREATE TABLE Professoren
(PersNr INTEGER PRIMARYKEY,
Name VARCHAR(3 0) NOT NULL ,
Rang CHAR(2) CHECK (Rang in ('C2' ,'C3' ,'C4')) ,
Raum INTEGER UNIQUE) ;
È questo (http://stackoverflow.com/q/13196572/398670) dallo stesso materiale del corso, forse? I tempi fanno sembrare che potrebbe essere un docente che ha modificato SQL in un elaboratore di testi e lo ha distribuito come PDF o note di pagine Web che gli studenti hanno copiato e incollato ... –
La sintassi è corretta se si utilizzano le virgolette singole corrette: http://www.sqlfiddle.com/#!12/fb4ec –
Solo una FYI la tua convenzione di denominazione non è buona. Utilizza i punteggi come first_name o se vuoi seguire la via meno ideale che puoi fare "FirstName". Non mescolare e abbinare maiuscole e caratteri di sottolineatura. Questo è generale per la denominazione, ma specifico per postgres: rimarrebbe sotto i punteggi per separare le parole e non usare maiuscole. – Kuberchaun