RISOLTO [SQL] Modificare ordine delle colonne con vincolo

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

sare1234

Utente Attivo
Messaggi
262
Reazioni
3
Punteggio
35
Salve come posso modificare l'ordine delle colonne se voglio che il nome venga scritto prima dell'id tramite un vincolo e non operando da query in questo modo:

SQL:
SELECT Name,Id FROM NAMES;
?grazie

SQL:
/* Create a table called NAMES */
CREATE TABLE NAMES(
    Id integer PRIMARY KEY,
    Name text
  
    );

/* Create few records in this table */
INSERT INTO NAMES VALUES(1,'Tom');
INSERT INTO NAMES VALUES(2,'Lucy');
INSERT INTO NAMES VALUES(3,'Frank');
INSERT INTO NAMES VALUES(4,'Jane');
INSERT INTO NAMES VALUES(5,'Robert');
COMMIT;

/* Display all the records from the table */
SELECT * FROM NAMES;
 
Quale sarebbe questo vincolo?
Se vuoi stampare una lista non hai scelta, devi usare un SELECT usando tutti i WHERE che vuoi (e affini tipo sorting)
 
Quale sarebbe questo vincolo?
Se vuoi stampare una lista non hai scelta, devi usare un SELECT usando tutti i WHERE che vuoi (e affini tipo sorting)
ma in realtà devo rappresentare il seguente vincolo, penso tipo con check, il id è successivo al nome. Ho provato così:
SQL:
ALTER TABLE NAMES
  ADD CONTRAINT IdSuccessivoNome CHECK (Id,Name);
Ma non va
 
Continuo a non capire, vuoi modificare la tavola nel database o vuoi stampare i valori in modo diverso da come sono memorizzati?
 
Boh io non capisco.
Non è che la chiave deve essere il primo campo della tabella eh. Se la vuoi creare prima campo nome e poi campo id mica si incaxxa.
 
Continuo a non capire, vuoi modificare la tavola nel database o vuoi stampare i valori in modo diverso da come sono memorizzati?
eh scusa...nella definizione della tabella devo inserire il vincolo che "il nome è successivo all'id"
--- i due messaggi sono stati uniti ---
Boh io non capisco.
Non è che la chiave deve essere il primo campo della tabella eh. Se la vuoi creare prima campo nome e poi campo id mica si incaxxa.
si lo so ma l'esercizio mi dice di definire nella definizione della tabella il vincolo
 
Ma perché non ci dai il testo dell’esercizio? Altrimenti facciamo a’nottata cercando di capire. Perché io ancora non ho idea di quello che devi fare.
 
Ma perché non ci dai il testo dell’esercizio? Altrimenti facciamo a’nottata cercando di capire. Perché io ancora non ho idea di quello che devi fare.
si allora l'esercizio è diverso da quello che ho indicato all'inizio, volevo renderlo più semplice per capirlo, comunque ho tale schema logico:

AppleScript:
ArticoloFisico(Nserie, dataProduzione, Produttore, DataAcquisizione, codArticoloFisico)

quindi in SQL:

SQL:
CREATE TABLE ArticoloFisico
(
   Nserie    VARCHAR(20) NOT NULL,
   dataProduzione Date,
   Produttore  VARCHAR(50) NOT NULL,
   DataAcquisizione Date,
   codarticoloFisico  VARCHAR(10) PRIMARY KEY,
)

il vincolo da indicare in questa tabella è: la data "DataAcquisizione" è successiva alla "dataProduzione".
 
Ma quello è completamente diverso! Il vincolo non è nell’ordine dei campi della tabella, bensì nei valori di alcuni campi. In questo caso, la data di acquisto deve seguire quella di produzione.
Dai una occhiata Qui
 
Ma quello è completamente diverso! Il vincolo non è nell’ordine dei campi della tabella, bensì nei valori di alcuni campi. In questo caso, la data di acquisto deve seguire quella di produzione.
Dai una occhiata Qui
okay avevo capito di indicare tipo così

Codice:
CREATE TABLE ArticoloFisico
(
   Nserie    VARCHAR(20) NOT NULL,
   dataProduzione Date,
   Produttore  VARCHAR(50) NOT NULL,
   DataAcquisizione Date CHECK (espressione),
   codarticoloFisico  VARCHAR(10) PRIMARY KEY,
)

oppure

Codice:
CREATE TABLE ArticoloFisico
(
   Nserie    VARCHAR(20) NOT NULL,
   dataProduzione Date,
   Produttore  VARCHAR(50) NOT NULL,
   DataAcquisizione Date,
   codarticoloFisico  VARCHAR(10) PRIMARY KEY,

   CONSTRAINT VINCOLO1 CHECK (espressione);
)

ma il mio problema è che non so cosa mettere in espressione
 
Ok il non cercare però almeno guardare quello che è l'esempio linkato da Andretti...
Guarda su MySQL https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html

Ti sei quindi persa una parte:
SQL:
[CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]

E su altri siti trovi praticamente esempi già fatti (questo è con una alter table) https://www.codegrepper.com/code-ex...int+to+check+if+date+greater+than+todays+date
ma io devo usare sql non mysql e non ho capito cosa mi sono persa, non va bene se scrivo cosi:
SQL:
CREATE TABLE ArticoloFisico
(
   Nserie    VARCHAR(20) NOT NULL,
   dataProduzione Date,
   Produttore  VARCHAR(50) NOT NULL,
   DataAcquisizione Date,
   codarticoloFisico  VARCHAR(10) PRIMARY KEY,
   CONSTRAINT vincolo1 CHECK (dataAcquisizione > dataProduzione)
)

?
 
Si, questo è corretto. Il solo frammento che citavi nel post precedente però no.
Comunque fai prima a scriverlo ed eseguirlo, così verifichi se è ciò che ti aspetti.
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top