2017-01-12 23 views
0

問題已更新自動完成SQL領域:

比方說,我有兩個表:

表1
ID_Ticket | Ticket_Quantity | Total_Price(Calculated field) -------------------------------------------- 2 | 5 | x 1 | 3 | y

表2
ID_Ticket | Ticket_Price ------------------------ 1 | 4.5 2 | 5
我想防止數據庫的用戶填寫Total_Price字段(通過編輯Top 200行或查詢),而不是我想要它計算爲Ticket_Price * Ticket_Quantity並自動插入該行。

在這種情況下,x應爲25ÿ應該是13.5(一旦Ticket_Quantity和票價:TICKET_PRICE填充該行的值應該被自動insterted)

我寫這樣的功能:
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

但有一個錯誤:
ALTER TABLE Purchases ADD Total_Price AS Multiply(Table2.Ticket_Price,Ticket_Quantity);
釷:包含一個函數內無法數據返回給客戶端

此外,當我想基於功能添加計算字段

Select語句e詢問不執行並給我出現此錯誤:

無法綁定多部分標識符「Product.Prod_Price」。



我該如何調用Table2的值並修復Multiply函數?
如何基於同一行字段

+0

使用存儲過程在您的數據庫中插入記錄不要發佈您的表。決不。使用只讀視圖發佈信息。 – McNets

+0

使其成爲計算的字段。 –

+0

@McNets我的道歉。對於用戶,我的意思是數據庫管理員(誰可以使用數據庫並對其進行修改) – noviceprogrammer

回答

0

我找到了解決辦法,所以我將它張貼誰擁有了同樣的問題未來的讀者:

在對象資源管理器(左圖)去這個路徑:
Databases --> <your_database_name> --> programmability --> functions
上單擊鼠標右鍵在功能文件夾並選擇New --> Scalar-valued function
粘貼下面的函數腳本(更換<變量>與那些符合您的數據庫):

CREATE FUNCTION dbo.Multiply(@id INT, @price DECIMAL(19,4)) 
--or (@x float, @y money) depending on the type of your columns you have 
RETURNS DECIMAL(19,4) 
--RETURNS <data_type_of_the_calculated_column_you_want> 
AS 
BEGIN 
    RETURN 
    (SELECT @price * Ticket_Price 
    --SELECT @<second_argument/column_name_of_Table1>*<column_name_of_Table2> 
    FROM Table2 
    --FROM <your_Table2_name> 
    WHERE ID_Ticket = @id) 
    --WHERE <unique/PrimaryKey_Column_to_identify_the_row_in_Table2> 
    -- = @<ForeignKey_Column_to_identify_the_row_in_Table2> 
END 

並執行它。
現在創建一個新的查詢(按Ctrl + N)在Table1添加計算列,並複製粘貼以下查詢:

ALTER TABLE Table1 
--ALTER TABLE <your_Table1_name> 
ADD Total_Price AS dbo.Multiply(ID_Ticket,Ticket_Quantity); 
--ADD <name_of_the_calculated_row_you_like> AS 
-- dbo.<Function_Name>(<id_column_name_of_Table2>,<column_name_from_Table1>) 

執行查詢。
現在計算的列應該是表1和表2的列的乘積

相關問題