FRAGE aktualisiert wurde:
Lasst uns sagen, ich habe zwei Tabellen:
Table1
ID_Ticket | Ticket_Quantity | Total_Price(Calculated field) -------------------------------------------- 2 | 5 | x 1 | 3 | y
Table2
ID_Ticket | Ticket_Price ------------------------ 1 | 4.5 2 | 5
ich den Benutzer der Datenbank verhindern wollen um das Feld Total_Price zu füllen (über Top 200 Zeilen oder Abfragen bearbeiten), möchte ich, dass es als Ticket_Price * Ticket_Quantity berechnet wird und automatisch in diese Zeile eingefügt wird.
In diesem Fall sollte x sein 25 und y sollte 13,5 sein (die Werte automatisch insterted werden sollte, sobald Ticket_Quantity und Ticket_Price für diese Zeile gefüllt sind)
I eine Funktion wie folgt geschrieben:
CREATE FUNCTION Multiply(@x DECIMAL(19,4), @y DECIMAL (19,4)) RETURNS DECIMAL(19,4) AS BEGIN SELECT @x * Ticket_Price FROM Table2 WHERE ID_Ticket = @y END
aber es ist ein Fehler:
Select-Anweisungen in einer Funktion enthalten ist, kann keine Daten zurückgegeben zu einem Client
auch wenn ich das berechnete Feld hinzugefügt werden soll, basierend auf der Funktion: ALTER TABLE Purchases ADD Total_Price AS Multiply(Table2.Ticket_Price,Ticket_Quantity);
Th Die Abfrage führt nicht aus und gibt mir diesen Fehler:
Die mehrteilige Kennung "Product.Prod_Price" konnte nicht gebunden werden.
Wie sollte ich die Werte aus Table2 aufrufen und die Multiply-Funktion korrigieren? gehenWie SQL-Feld automatisch vervollständigen, basierend auf derselben Zeile Felder
im Objekt-Explorer (links) auf diesem Weg:
Verwenden Sie Stored Procedure, um Datensätze in Ihre Datenbank einzufügen, veröffentlichen Sie Ihre Tabellen nicht. Noch nie. Verwenden Sie schreibgeschützte Ansichten zum Veröffentlichen von Informationen. – McNets
Machen Sie es zu einem berechneten Feld. –
@McNets meine Entschuldigung. Mit user meinte ich den Datenbankmanager (wer kann die Datenbank benutzen und modifizieren) – noviceprogrammer